|
Тема
|
Таблица без първичен ключ?
|
|
Автор |
Dakota (erotoman) |
Публикувано | 05.11.09 00:26 |
|
Има ли случаи, в които такава таблица би била от полза и има ли смисъл такова нещо изобщо? Какво казва релационният модел по въпроса?
Питам във връзка с един научен проект, който съм подхванал и в който стигам до проблема с недвусмисленото идентифициране на единица данна от даден тип (т.е. на ред от дадена таблица).
"Договор, подписан с Русия, струва по-малко от хартията, върху която е написан!" - БисмаркРедактирано от Dakota на 05.11.09 00:27.
| |
Тема
|
Re: Таблица без първичен ключ?
[re: Dakota]
|
|
Автор |
salle (един такъв) |
Публикувано | 05.11.09 02:23 |
|
Теорията казва "Смъртен Грях!!!!" разбира се. Всяка таблица трябва да има първичен ключ дори и да е комбинацията от всички колонки.
Следва директно от основния принцип да не съхраняваш едно и също нещо повече от един път. Така де. Защо да пазиш един и същи ред няколко пъти като можеш да добавиш колонка брояч и така да натикаш всички повторения в един ред?
В практиката такива таблици имат смисъл например когато архивираш поток от информация ама ти това със сигурност го знаеш.
| |
Тема
|
Re: Таблица без първичен ключ?
[re: salle]
|
|
Автор |
Dakota (erotoman) |
Публикувано | 05.11.09 13:34 |
|
За последното не съм сигурен, че знам. Сещам се само за един случай, в който потенциално може да се мине и без първичен ключ - таблица с един единствен ред.
А архивиране на поток от информация?... Не трябва ли и там всяка част от този поток да си има начин за идентифициране?
Целта ми е да създам версия на всеки обект от базата, т.е. всяка промяна на данни, посредством инструкция от тип DML, да бъде записвана и да се създаде възможност за връщане назад (във времето/транзакциите). Нещо като самия модел MVCC, но на по-високо ниво. И стигам до извода, че въпросните таблици без първичен ключ са неуправляеми от тази гледна точка.
"Договор, подписан с Русия, струва по-малко от хартията, върху която е написан!" - БисмаркРедактирано от Dakota на 05.11.09 13:37.
| |
Тема
|
Re: Таблица без първичен ключ?
[re: Dakota]
|
|
Автор |
salle (един такъв) |
Публикувано | 05.11.09 23:06 |
|
Представи си /var/log/messages в таблица.
Имаш timestamp, шансът да се повторят редове е сравнително малък - едно и също нещо да се случи няколко пъти в секунда а и да се случи не е съществен проблем. При анализ на информацията няма голяма разлика дали даден ред се повтаря в рамките на една секунда 2 или 10 пъти.
| |
Тема
|
Re: Таблица без първичен ключ?
[re: Dakota]
|
|
Автор |
wqw (АзСъмЖив) |
Публикувано | 06.11.09 22:56 |
|
1NF означава "имаме PK"
| |
Тема
|
Re: Таблица без първичен ключ?
[re: salle]
|
|
Автор |
wqw (АзСъмЖив) |
Публикувано | 06.11.09 23:05 |
|
Основния информационен принцип е, че информацията в базата се представя единствено експлицитно чрез стойности в колони и редове в таблици.
Примерно ако имаш "поток" от информация да не разчиташ на имплицитната подредба на редовете, т.е. това че нещо е логнато (INSERT-нато) веднага след нещо друго трябва да се обозначи по някакъв начин, а не да разчитаме че SELECT-ът ще върне данните в същата последователост.
| |
Тема
|
Re: Таблица без първичен ключ?
[re: salle]
|
|
Автор |
Dakota (erotoman) |
Публикувано | 10.11.09 12:32 |
|
Но това е при условие, че данните не се променят, т.е. тази таблица е само за четене (което излиза извън рамките на моето проучване), и също при условие, че не ме интересува поредността на записите.
Е, практически погледнато горните две са свързани, т.е. ако няма редактиране и никой не пипа редовете, те ще са в последователността, в която са записани. Но теоретично на това не трябва да се разчита изобщо.
"Договор, подписан с Русия, струва по-малко от хартията, върху която е написан!" - Бисмарк
| |
|
|
|
|