|
Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Тема
|
Pitane
|
|
Автор | System (Нерегистриран) |
Публикувано | 24.02.03 11:45 |
|
1. Kak se suzdavat 'Relationships' v MySQL mejdu tablitcite?
2. MySQL poddurja li vlojeni zaiavki?
3. А тригери и съхранени функции
| |
Тема
|
Re: Pitane
[re: System]
|
|
Автор | baj L\bo (Нерегистриран) |
Публикувано | 24.02.03 18:28 |
|
релациите са понятие от логическото моделиране и се създават като теглиш една черта (ползвай молив, не химикалка) между двете entities. От страната на детето чертата завършва с "пачи крак" или една дебела точка (в зависимост от нотацията която използваш).
Като настане време логическия модел да се напраи на физически вече не става дума за релации, а за форин кийс. С други думи в самата база данни релацията се реализира като форин кий.
Синтаксиса трябва да е нещо такова:
alter table <table name> add constraint <constraint name>
foreign key (column list) reference <parent table> (column list)
Смисълът е че в табле не можеш да имаш редове за които не съществъват съответните редове в парент табле.
Туй се нарича "declarative referential integrity" и в някой БД го има, в други го няма. В сайбейс например се появява чак във версия 10.
Ако няма декларативна интегрити, интегрити-то се прави с тригери. В самия тригер проверяваш дали родителя го има. И обратното -- като се изтрива/ упдейтва родителя се проверява дали има деца застрашени да останат сираци и или забраняваш операцията или първо изтриваш децата.
Ако БД няма и тригери, трябва защитаваш базата от данни чрез клиентската програма, което е загубена работа и трябва да се примириш с мисълта че лека-полека в базата ще се намърдат лайна, които трябва да се чистят, което хич не е приятно. Може разбира се да ги оставиш с надеждата че юзерите нямат толкова развито обоняние и няма да усетят миризмата.
В заключение, има един куп програми които подпомагат моделирането като налагат спазването на правилата за нормализация, рисуват диаграми на модела и в крайна сметка генерират скрипт с ДДЛ-ла на базата от данни. Препоръчвам горещо използването им за всеки проект, който изисква повече от 10 таблици. ErWin (CA) е готин, но има и сума ти други. Малко са скъпички, но за българина това не е проблем.
![](http://i.dirbg.com/clubs/icons/cool.gif)
| |
Тема
|
Re: Pitane
[re: System]
|
|
Автор | Pavel (Нерегистриран) |
Публикувано | 24.02.03 19:56 |
|
>1. Kak se suzdavat 'Relationships' v MySQL mejdu tablitcite?
Ami wuobrazqwash si che gi ima kato kazwash sega klucha ot tqa tablica trqbwa da e sushtiq kato klucha ot drugata i pri selectetite go wzemash predwid. Nqma relni constrainti w MySQL
>2. MySQL poddurja li vlojeni zaiavki?
Ne, chak wuw versiq 5 t.e. sled 2-3 godini
>3. А тригери и съхранени функции
Pak sled 2-3 godini
| |
Тема
|
Re: Pitane
[re: System]
|
|
Автор |
salle (минаващ) |
Публикувано | 24.02.03 23:50 |
|
1. Както Бай Любо ти каза - на хартия. т.е. та "идейно ниво"
Ако те интересуват т-нар- FOREIGN KEYS - има ги за InnoDB таблици.
2. Във 4.1 и нагоре. ВЕЧЕ!!! Само, че 4.1 е в много ранен стадий на разработка - още нямаме и Alpha.
Между другото непрекъснато се убеждавам, че в 90-95% от случаите когато някой пита за вложени заявки всъщност може и без тях. А по принцип когато нещо може и със и без ... без е по бързо поради голям ред причини и независимо от сървъра ... ама това е встрани от темата.
3. Съхранени Процезури в 5.0 - ако някой много силно се интересува ще му ги покажа работещи. Има много време обаче.
Тригери - планирани са за 5.0
Съвсем логично е защото едва ли някой може да си представи смисъл от Тригери без Съхранени Процедури ![](http://i.dirbg.com/clubs/icons/smile.gif)
| |
Тема
|
Re: Павеле...къде четеш?
[re: Pavel]
|
|
Автор |
salle (минаващ) |
Публикувано | 25.02.03 01:22 |
|
> Ne, chak wuw versiq 5 t.e. sled 2-3 godini
mysql> select version();
+-----------------------+
| version() |
+-----------------------+
| 4.1.0-alpha-debug-log |
+-----------------------+
1 row in set (0.02 sec)
mysql> select a from t1 where a in (select a from t1 where a in (select b from t2));
+------+
| a |
+------+
| 1 |
+------+
1 row in set (0.01 sec)
mysql> explain select a from t1 where a in (select a from t1 where a in (select b
from t2));
+----+---------------------+-------+--------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+---------------------+-------+--------+---------------+------+---------+------+------+-------------+
| 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 2 | Using where |
| 2 | DEPENDENT SUBSELECT | t1 | ALL | NULL | NULL | NULL | NULL | 2 | Using where |
| 3 | DEPENDENT SUBSELECT | t2 | system | NULL | NULL | NULL | NULL | 1 | |
+----+---------------------+-------+--------+---------------+------+---------+------+------+-------------+
3.
> Pak sled 2-3 godini
mysql> select version();
+-------------------+
| version() |
+-------------------+
| 5.0.0-alpha-debug |
+-------------------+
1 row in set (0.02 sec)
Има работещи съхранени процедури така, че се надявам и тук да не си прав за 2-3 те години
![](http://i.dirbg.com/clubs/icons/smile.gif)
| |
Тема
|
тук пак може да заспорим....
[re: salle]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 25.02.03 08:55 |
|
А по принцип когато нещо може и със и без ... без е по бързо поради голям ред причини и независимо от сървъра ... ама това е встрани от темата.
я кажи една причина поне ?
ако говорим за това, че една добре оптимизирана заявка се изпълнява по-бързо и създава по-малко грижи на сървъра - съгласен!!!
но аз мисля, че е точно обратното - когато може без и със... обикновено по бързо е със!
| |
Тема
|
Re: Pitane
[re: System]
|
|
Автор | System (Нерегистриран) |
Публикувано | 25.02.03 09:33 |
|
Che za kakvo mi e togava tozi MySQL. Niakoi moje li da me ubedi v tova da go izpolzvam?
| |
Тема
|
Re: Pitane
[re: System]
|
|
Автор |
NDeu (минаващ) |
Публикувано | 25.02.03 11:07 |
|
Ползвай IB6/Firebird
Има всичко горепосочено + транзакции (salle ще ти каже, че и те ги имат понякога, но обикновено не били необходими )
По-безплатен е
Айде на войната-а-а-а![](http://i.dirbg.com/clubs/icons/crazy.gif)
| |
Тема
|
Re: Pitane
[re: NDeu]
|
|
Автор |
salle (минаващ) |
Публикувано | 25.02.03 12:27 |
|
NDeu
Аз не помня да сам казвал ти какво ще кажеш ....
| |
Тема
|
Re: Pitane
[re: System]
|
|
Автор |
salle (минаващ) |
Публикувано | 25.02.03 12:36 |
|
Ако ти трябват точно тези неща който липсват в който и да е продукт никой в нищо не може да те убеди естествено.
Иначе мога да ти посоча много причини, но все пак по-добре потършувай из интернета за да провериш защо толкова милиони потребители харесват MySQL
| |
|
Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
|
|
|