Jump to content
  • 0

Различные связи А здесь смотрели?


DDeath
 Share

Question

Добрый день. Возник вопрос при проектировании БД на MySql.

Имею 3 таблицы

1. Countries - | ID | Name |

2. Organizations - | ID | Name | Country | CustomCol1 | CustomCol2 | ... |

3. Companies - | ID | Name | Organization | CustomCol1 | CustomCol2 | ... |

Вопросы:

1. Организации могут быть международними и не принадлежать к какой либо стране - Правильно ли хранить связь в таблице если она может быть пустой? А если нет то как?

2. Есть еще 5 таблиц (Пример : News, Articles, Tenders и т.п) которые могут принадлежать к одной из трёх таблиц(Countries , Organizations , Companies) - Как правильно хранить такие связи?

Спасибо.

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

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

| prop_ID | ID | value |

собственно prop_ID будет указывать на принадлежность записи к "Стране" либо другому опциональному полю, ID будет являть связью, ну а value - значение. Если же база большая то лучше отделить каждому опциону по таблице.

Если по таблице планируется осуществлять поиск то лучше в Organizations оставить колонки (News, Articles, Tenders и т.п) где хранить ID а сами значения хранить в другой таблице.

НО самое важное это выборка (по сути все от нее и зависит) если вы скажем обращаетесь к таблице Organizations исключительно по ID то оптимизировать смысла и вовсе нету(если у вас не много миллионные таблицы). А если вам при каждой выборке необходима вся информация по организации то лучше сделать представление(Сводная таблица которая повторяет структуру Organizations но уже с подставленными значениями вместо ID), представления в свою очередь могут создаваться как в ручную так и через события если говорить о mysql

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy