|
|
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Сейчас работаю над БД, которую сначало буду разробатвать только я, затем присоединяться другие. А в дальнейшем кто ещё захочет! Я решил придумать несколько строгих правил присвоения имён таблиц, во первых чтобы был порядок в БД и чтобы в дальнейшем не путаться. Скоро будут и другие правила, но я пока прошу оценить эти: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Интересует только здоровая, нормальная критика! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 15:37 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
префикс к таблицы имхо лишний, и не имеет слысловой нагрузки; префик к primaty key, имхо лишний это поле обычно первое и так. форенкеи обычно xxx_id где xxx первые три буквы имени таблицы на которую ссылается; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 17:09 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
LeximusПоля одновременно являющиеся первичными и внешними ключами. Это связь таблиц 1 к 1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 17:11 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Можно иметь более длинные префиксы имен таблиц. Стандартный, не подверженный изменениям или подверженный слабым изменениям словарь (в схеме звезда) SDC Словарь, наполняемый пользователями (типы, виды и т.п.) UDC Таблица основных данных (в схеме звезда) TAB Перекрестная таблица, реализующая M:M TCR Таблицы, хранящие деревья (самосоединение) TRE Ненормализованные таблицы, хранящие насчитанные суммарные данные SUM Ненормализованные таблицы, хранящие насчитанные данные в форме сводных отчетов PVT Можно выделить отдельный префикс для метаданных, можно классифицировать таблицы метаданных по предыдущей схеме ME+<префикс> Можно выделить отдельный префикс для системных данных (пользователи, сеансы, права доступа и т.п.) SY+<префикс> В зависимости от спецификм задачи всякий раз будет получаться какая-то новая оптимальная именно под нее классификация. Система именования полей тоже сильно зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 17:24 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
С моей точки зрения все эти дублирования и венгерская нотация излишни Я бы оставил: - Имя таблицы должно отображать данные хранящиеся в таблице. - Суммарное количество символов имени таблицы не должно превышать XX символов (минимальная из макимальных длин полей, поддерживаемых СУБД). - Имя таблицы должно состоять из латинских символов и/или цифр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 17:27 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Leximus пишет: > Категория 1 имеет обозначение “pk”. > Категория 2 имеет обозначение “fk”. > Категория 3 имеет обозначение “pfk”. > Категория 4 имеет обозначение “d” Зачем бы это все городить ? В метаданных СУБД и так описано, какое поле является PK, FK, PKFK или еще как. Это тебе затруднит потом использование полей, будешь все время тыркаться набирать ненужные "pk", "fk". К тому же чел. который пишет запросы - зачем ему вообще знать, PK оно или FK ? Какая разница ? > • После обозначения категории в имени поля следует символ “_”. > • Далее в зависимости от категории следует имя таблицы: > Категория 1,3,4: следует имя таблицы, в котором находится поле А rolename-ы ? Если ДВА таких поля в дочерней таблице будет ? > Категория 2: следует имя таблицы, на которое ссылается ключ. > • После имени таблицы, в имени поля следует символ “_”. > • После чего следует непосредственно имя поля, обозначающее её значение. > Пример: > Категория 1: pk_tEmployees_Id > Категория 2: fk_tEmployees_Id > Категория 3: pfk_tEmployees_DBUIN > Категория 4: d_tEmployees_Name а в имя поля писать имя ее таблицы - вообще дебилизм IMHO. Задолбаешься потом набирать, а в жизни это ничем не поможет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 19:29 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
belugin пишет: > Я бы оставил: > - Имя таблицы должно отображать данные хранящиеся в таблице. > - Суммарное количество символов имени таблицы не должно превышать XX > символов (минимальная из макимальных длин полей, поддерживаемых СУБД). > - Имя таблицы должно состоять из латинских символов и/или цифр. +1 Вот еще у нас таблицы большими буквами, поля - маленькими. Ничем особенно тоже не помогает, просто так, красиво. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 19:31 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
жесть! сходу нагуглил несколько ссылок, прочитайте их перед изобретением этого жуткого велосипеда тынц , или тынц , или тынц , ну и традиционно гугл З.Ы. главная штука в соглашении по именованию объектов заключается в том, что она должна быть максимально простой, иначе ей не будут пользоваться, в том числе и автор )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 22:49 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
MasterZiv а в имя поля писать имя ее таблицы - вообще дебилизм IMHO. Задолбаешься потом набирать, а в жизни это ничем не поможет. Posted via ActualForum NNTP Server 1.4 Согласен за одним исключением. Желательно, чтобы в разных таблицах одна и та же сущность имела одинаковое имя (ИМХО-разумеется). Тогда, если именовать поле суррогатного ключа ID во всех таблицах - требует именовать в связанных таблицах, как customer_ID/customerID. Меня это всегда сбивало. Поэтому для таблицы Customers я использую поле customer или customerId - и так во всех связанных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 23:24 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
apapacy MasterZiv а в имя поля писать имя ее таблицы - вообще дебилизм IMHO. Задолбаешься потом набирать, а в жизни это ничем не поможет. Posted via ActualForum NNTP Server 1.4 Согласен за одним исключением. Желательно, чтобы в разных таблицах одна и та же сущность имела одинаковое имя (ИМХО-разумеется). Тогда, если именовать поле суррогатного ключа ID во всех таблицах - требует именовать в связанных таблицах, как customer_ID/customerID. Меня это всегда сбивало. Поэтому для таблицы Customers я использую поле customer или customerId - и так во всех связанных таблицах.+1 , к обоим авторам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 23:49 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
apapacy пишет: > Желательно, чтобы в разных таблицах одна и та же сущность имела > одинаковое имя (ИМХО-разумеется). Ты наверное что-то не понимаешь в этой жизни. Сущность - это таблица. Сущность представляется таблицей. Как она может быть "в разных таблицах" - не понятно. Видимо имелось в виду "идентификатор сущности", т.е. первичный ключ таблицы. Тогда, если именовать поле > суррогатного ключа ID во всех таблицах - требует именовать в связанных > таблицах, как customer_ID/customerID. Меня это всегда сбивало. Поэтому > для таблицы Customers я использую поле customer или customerId - и так > во всех связанных таблицах. Ну, это вполне разумно. Мы делаем так же. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 09:47 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
кстати вопрос, таблицы именовать в единственном числе али множественном? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 10:14 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Nafкстати вопрос, таблицы именовать в единственном числе али множественном?я предпочитаю во множественном, хотя принципиальной разницы не вижу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 10:46 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за ответы! Но теперь вопрос такой: Что если я введу в имя поля префикс типа, который будет указывать на то, каким путём созданно поле. Ну представим что при инсталяции базы создаются некоторые поля(назовём их стандартные), затем через модули системы(клиентской части) пользователь решил добавить дополнительное поле, ну например к Клиентам решил добавить поле Дата рождения! Соответственно оно будет с другим префиксом. Или другая ситуация, Тот кто купил БД решил в ручную добавить поле которое нужно для чего либо, но уже с другим префиксом. А нужно это для того, что если я например потом им дам обновление, чтобы поля не пересекались, и у них не возникло проблемм! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 13:22 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Entaro Adun LeximusПоля одновременно являющиеся первичными и внешними ключами. Это связь таблиц 1 к 1 ? В моей БД это будет часто встречаться. Например: Есть таблица DataBases В этой таблице хранится список Баз данных, с которыми текущая БД будет обмениваться данными. Соответсвенно в таблицах будет указано к какой БД запись относится... И этот указатель вместе с Id клиента будет первичным ключём для других таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 13:35 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Naf пишет: > кстати вопрос, таблицы именовать в единственном числе али множественном? Мы - в единственном делаем. Т.е. по названию экземпляра. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 15:55 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
MasterZiv Naf пишет: > кстати вопрос, таблицы именовать в единственном числе али множественном? Мы - в единственном делаем. Т.е. по названию экземпляра. Posted via ActualForum NNTP Server 1.4 Руби-на-Рельсах предлагает именовать таблицы в множественном, а объектную переменную извлеченую из строки таблицы - в единственном. Чисто интуитивно воспринимается таблица - как множество - Детали, Работники ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 21:09 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
apapacy Руби-на-Рельсах предлагает именовать таблицы в множественном, а объектную переменную извлеченую из строки таблицы - в единственном. Чисто интуитивно воспринимается таблица - как множество - Детали, Работники ... Названия "работник" и "работники" применительно к таблице несут одинаковый смысл, но в форме множественного числа слово обычно имеет больше букв, что может конфликтоать с ограничением на длинну идентификатора. Вообще, префиксы и прочие украшения меют второстепенный смысл, а префиксы предложенные автором практически не несут дополнительной информации (всё это есть в словаре БД). Гораздо важнее сосредоточиться на лингвистических аспектах задачи. Например, название таблицы должно быть существительным в едиственном/множественном числе. Название столбца не должно содержать его тип или дублировать название таблицы. Например в столбце "дата размещения заказа" таблицы "заказ", слово "дата" указывает на тип данных, а слово "заказа" повторяет название таблицы. И то и другое содержится в словаре БД. Поэтому название дожно быть изменено, например на "размещён", что в SQL запросе будет читаться как "заказ.размещён" - коротко, ясно и почти на естественном языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 04:20 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
mcureenab пишет: > Вообще, префиксы и прочие украшения меют второстепенный смысл, а > префиксы предложенные автором практически не несут дополнительной > информации (всё это есть в словаре БД). Гораздо важнее сосредоточиться > на лингвистических аспектах задачи. Например, название таблицы должно > быть существительным в едиственном/множественном числе. Согласен абсолютно ! Название столбца > не должно содержать его тип или дублировать название таблицы. Например в > столбце "дата размещения заказа" таблицы "заказ", слово "дата" указывает > на тип данных, а слово "заказа" повторяет название таблицы. И то и > другое содержится в словаре БД. Поэтому название дожно быть изменено, > например на "размещён", что в SQL запросе будет читаться как > "заказ.размещён" - коротко, ясно и почти на естественном языке. согласен частично, думаю тут могут быть иключения, потому что -- в таблице может быть несколько атрибутов, связанных с "размещением", например, вид размещения, дата размещения, время размещения, характер размещения. В этом случае "дата" - название не типа данных, а атрибута размещения, они просто в этом случае совпадают. (я бы кстати переименовал бы лучше тип данных (домен), во что-то типа date_t) -- иногда кроме слова "date" вообще в название атрибута нечего вставить. Ну вот есть у нас таблица "событие" там есть поле "время". Его можно назвать либо "время", либо "время события", и оба названия будут неверными по предлагаемому соглашению. Можно конечно назвать его "произошло в", но, ей Богу, просто "время" проще и понятнее. -- Иногда мы даже на естественном языке говорим про какой-то атрибут что-то типа "дата выдачи паспорта". Тогда и в БД лучше атрибут так и называть. Причем "выдача паспорта" было бы неправильно, потому что выдача паспорта - это процесс, явление, а "дата выдачи паспорта" - это его свойство уже. "Выдан в" и коряво, и не звучит, и не понятно - дата или время. Т.е. я хочу сказать - эти правила должны быть рекомендациями. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 10:09 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
MasterZiv "Выдан в" и коряво, и не звучит, и не понятно - дата или время. Т.е. я хочу сказать - эти правила должны быть рекомендациями. Это только пример не претендующий на полноту. В паспорте этот атрибут называется "дата выдачи", по сему оригинальное назание имеет смысл сохранить, а на такие случаи ввести правило - по возможности сохранять оригинальное или общепринятое название. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 10:47 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
А как вы считаете, префикс таблицы должен быть или нет? Мне кажется что удобно былобы в запросе сразу видеть что и к какому типу относится! Ведь например если запрос из представления то его долго можно искать в списке таблиц в менеджере! А вы как считаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 13:39 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Каждый обладает своей АБСОЛЮТНОЙ истиной. Я использую префиксы типов таблиц и длинные имена полей в таблицах, как правило включающих имя сущности: <префикс_типа(i,n,dt,mn,db,s)> + <имя_сущности_то_есть_таблицы> + <уточняющий_суффикс(Date,Nomer,Count,Amount)> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 14:06 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
LeximusА как вы считаете, префикс таблицы должен быть или нет? Мне кажется что удобно былобы в запросе сразу видеть что и к какому типу относится! Ведь например если запрос из представления то его долго можно искать в списке таблиц в менеджере! А вы как считаете? вот поэтому у представлений и имеет смысл делать префикс. У таблиц - нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 15:39 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
Aviant вот поэтому у представлений и имеет смысл делать префикс. У таблиц - нет А мне кажется, что если делать фрефикс у представления, то и у таблицы надо... А то может получиться не очень! Например префикс "v", то таблица с именем velo в запросе будет приносить непонятки, толи это таблица, толи представление! Помоему префикс если и вносить в этом плане, то и для таблиц, и для представления и для другого чегонибудь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 17:20 |
|
||
|
Правило создания таблиц!
|
|||
|---|---|---|---|
|
#18+
предложенные префиксы как у таблиц, так и у вьюх навязывают клиенту БД знание, которое ему абсолютно не нужно, а в некоторых случаях ещё и вредно. И всё это ради сомнительного удобства быстро найти объект в списках менеджера? в топку такие префиксы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 18:13 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35116758&tid=1544040]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 484ms |

| 0 / 0 |
