powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
13 сообщений из 13, страница 1 из 1
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33904259
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Сотрудник утверждает, что атрибуты должны быть уникальны в пределах всей базы, а не только таблицы.

Например, он утверждает, что вот это вот плохо:

Код: plaintext
1.
2.
3.
4.
5.
6.
create table document(
  identifier char( 12 ),
  body blob( 5000000 ));

create table comment(
  ID int,
  body varchar( 3500 ));
потому что атрибут body не уникален в рамках базы данных. Он говорит, что это разные по смыслу атрибуты, поэтому они должны по разному называться в инфологической модели данных. Например, document_body и comment_body. И правильное определение таблиц было бы таким:

Код: plaintext
1.
2.
3.
4.
5.
6.
create table document(
  identifier char( 12 ),
  document_body blob( 5000000 ));

create table comment(
  ID int,
  comment_body varchar( 3500 ));

Как вы считаете, действительно ли является красивым стилем обеспечивать уникальность атрибутов в рамках базы данных? Если да, то обьясните, пожалуйста, почему?

Всем заранее спасибо!
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33904276
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Явно на холивор тянет.
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33904286
масло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а при квалифицирванном имени получим document.document_body и comment.comment_body, масло масляное, лично я стараюсь такого избегать...

а то сидишь и не знаешь: то ли в глазах двоиццо, то ли не пойми чего :-O
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33904307
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalСотрудник утверждает, что атрибуты должны быть уникальны в пределах всей базы, а не только таблицы.
...
Он говорит, что это разные по смыслу атрибуты, поэтому они должны по разному называться в инфологической модели данных.В инфологической, ради Бога, так как она оперирует терминами предметной области. А в физической, IMHO, смысл отсутствует, так как пользователь не должен иметь доступа на этот уровень. Иначе действительно получается многословие, как выше упомянул "масло". Понятней не становится, а вот писать больше...
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33904668
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal
Код: plaintext
1.
2.
create table document(
  identifier char( 12 ),
  body blob( 5000000 ));
Вы конфой ошиблись. Это любо в "проектирование", либо туда, где существует тип данных blob() В MSSQL такого нет.

Про char(12) - это песня... :) , по сути вопроса - присоединяюсь к предыдущим. А по поводу вашего сотрудника-"теоретика".... До тех пор, пока человек сам не реализует своих идей, он категорично может нести еще не такой бред.
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33905028
Nuori Nero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зря вы так. Каждый делает как ему удобно. А "масла масляного" не будет. Если обеспечена уникальность имени поля в БД, то не имеет смысла писать имя таблицы перед именем поля. document_body или comment_body вполне достаточно. А если в запросе одна таблица участвует 2 раза, так даже читать удобно - сразу видно к какой таблице относится поле, даже если указывать короткие алиасы.

Пример (что он означает - понятия не имею):
Код: plaintext
1.
2.
3.
4.
select systeminfo_id, systeminfo_name, s1.surface_name, s2.surface_name
from systeminfo si
join surface s1 on (systeminfo_id = s1.si1_id)
join surface s2 on (systeminfo_id = s2.si2_id)

Для сравнения:
Код: plaintext
1.
2.
3.
4.
select si.id, si.name, s1.name, s2.name
from systeminfo si
join surface s1 on (si.id = s1.si1_id)
join surface s2 on (si.id = s2.si2_id)

Если количество связанных таблиц и выбираемых полей увеличивать, то второй вариант становится все менее читабельным. Хотя еще раз повторю: каждый делает как ему удобно.
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33905767
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ня бы создал таблички с полями
table1_super_unique_identifier
table2_super_unique_identifier
....
table3_super_unique_identifier

и пожелал бы удачи бывшим коллегам :D :D :D
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33906306
astamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да стоит, методика примерно такая
Название таблицы: customer
Начальные буквы названия полей: cstr_
Начальные названия лучше всего делать 3-4 буквы, предостережет от неявных ошибок в скриптах
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33906760
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каков копрпоративный стиль?
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33906847
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeColo®es Vetal
Код: plaintext
1.
2.
create table document(
  identifier char( 12 ),
  body blob( 5000000 ));
Вы конфой ошиблись. Это любо в "проектирование", либо туда, где существует тип данных blob() В MSSQL такого нет.

Про char(12) - это песня... :) , по сути вопроса - присоединяюсь к предыдущим. А по поводу вашего сотрудника-"теоретика".... До тех пор, пока человек сам не реализует своих идей, он категорично может нести еще не такой бред.
blob - стандарнтый тип. Если в MS SQL он раскладывается в IMAGE или TEXT , то это не повод отрправлять человека куда подальше. "Шире надо мыслить, товарищь". А какая песня в char(12), напойте плз. Еще есть char(10), char(22),char(24),char(32),char(36),char(38).. Тоже плиз озвучить :)
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33907339
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nuori Nero
Для сравнения:
Код: plaintext
1.
2.
3.
4.
select si.id, si.name, s1.name, s2.name
from systeminfo si
join surface s1 on (si.id = s1.si1_id)
join surface s2 on (si.id = s2.si2_id)

Если количество связанных таблиц и выбираемых полей увеличивать, то второй вариант становится все менее читабельным. Хотя еще раз повторю: каждый делает как ему удобно.

ИМХО, здесь неудачно выбраны алиасы si, s1 и s2. Используй более осмысленные алиасы.

По теме, лично я предпочитаю масло не умасливать. Если таблица в БД образует отдельное пространство имён для колонок, то к чему контролировать их уникальность в рамках всей БД? Ведь это дополнительная работа!

К стати, почему коллега не обратил внимание на поля identifier и ID? Почему во втором случае слово identifier сокращено до ID? Почему нет префикса с именем таблицы?
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33908008
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у нас принят конвеншин обзывания полей базы с префиксом до 3-4х символов (желательно согласных букв) -сокращения от имени таблички. Замечу - очень удобна практика, так как при сложно структуре базы - много джоинов на таблицы со сродными по смыслу полями (ID, Name, Description, .. etc). И шоб не писать длинные поля с названием таблиц и алиасы придумали вот такой простой выход.
Так что astamer +1
_______________________________________________________
Never ask users what they want, or they'll tell you.
...
Рейтинг: 0 / 0
Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
    #33909551
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nuori NeroЗря вы так. Каждый делает как ему удобно. А "масла масляного" не будет. Если обеспечена уникальность имени поля в БД, то не имеет смысла писать имя таблицы перед именем поля. document_body или comment_body вполне достаточно. А если в запросе одна таблица участвует 2 раза, так даже читать удобно - сразу видно к какой таблице относится поле, даже если указывать короткие алиасы.

Пример (что он означает - понятия не имею):
Код: plaintext
1.
2.
3.
4.
select systeminfo_id, systeminfo_name, s1.surface_name, s2.surface_name
from systeminfo si
join surface s1 on (systeminfo_id = s1.si1_id)
join surface s2 on (systeminfo_id = s2.si2_id)

Для сравнения:
Код: plaintext
1.
2.
3.
4.
select si.id, si.name, s1.name, s2.name
from systeminfo si
join surface s1 on (si.id = s1.si1_id)
join surface s2 on (si.id = s2.si2_id)

Если количество связанных таблиц и выбираемых полей увеличивать, то второй вариант становится все менее читабельным. Хотя еще раз повторю: каждый делает как ему удобно.
Как я понимаю это должно было бы выглядеть как-то так, чтобы отвечать вашим же правилам:
Код: plaintext
1.
2.
3.
4.
select systeminfo_id, systeminfo_name, s1.surface_name, s2.surface_name
from systeminfo si
join surface s1 on (systeminfo_id = s1.surface_systeminfo1_id)
join surface s2 on (systeminfo_id = s2.surface_systeminfo2_id)

Для сравнения:
Код: plaintext
1.
2.
3.
4.
select systeminfo.id, systeminfo.name, surface1.name, surface2.name
from systeminfo
join surface surface1 on (systeminfo.id = surface1.systeminfo1_id)
join surface surface2 on (systeminfo.id = surface2.systeminfo2_id)
Читабельность одинакова.
Плюсы же второго вижу как раз в том, что указано явно, какое поле из какой таблицы.
Ну и называть в какой-бы то ни было таблице поле как [name] вероятно не лучшая идея.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильно ли обеспечивать уникальность атрибутов в базе, а не только в таблице?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]