Введение в mysql

1 и 2 Этап – поиск сущностей и атрибутов

Cущности (в скобках атрибуты)

1. Supplier

2. Contracts (ContrDate)

3. Order (OrderDate)

4. Writer

5. Book (Titile) // <<Этой сущности не было в таблице, мы увидели её и создали

6. Genre

7. Publisher

8. Deliveries (Amount, Price) // <<Этой сущности не было в таблице, мы увидели её и создали

Как отделить сущность от атрибута?

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

В общем, логика прослеживается.

Сущность – Атрибут имеет взаимосвязь 1:1 в общем случае

Сущность – Сущность имеет взаимосвязь 1:M или M:N в общем случае

3 и 4 этап – установка взаимосвязей

Здесь можно, конечно как угодно действовать, рисовать на бумаге, рисовать в программах для интеллект-карт, но мне кажется лучше всего воспользоваться готовым софтом для ER-моделирования. Можно 1000 раз переставлять сущности, менять взаимосвязи. Итак, откроем MySQL WorkBench.

File >NewModel >AddDiagram

2 раза кликаем по AddDiagram. И перед нами открывается поле для действий.

Начинаем заполнять. Сначала добавим все сущности с атрибутами. А потом установим взаимосвязи.

Как добавить хотя бы 1 таблицу и заполнить её?

Заполняем таблицу так как нам надо…

Создадим таким образом все таблицы, которые нам нужны. Всего 8 таблиц как и заказывали.

Перед тем как мы будем налаживать взаимосвязи, разберемся в следующем.

История

GUI Tools

Пакет MySQL GUI Tools содержит кросс-платформенное свободное программное обеспечение (под лицензией GNU GPL) для администрирования серверов баз данных MySQL, а также для создания и манипулирования данными внутри баз данных MySQL.
Данный пакет разрабатывался Sun Microsystems, но позже его разработка была остановлена, и сейчас он доступен только из архивов загрузок на сайте MySQL.

Пакет GUI Tools был полностью заменён MySQL Workbench начиная с бета-версии 5.2. Тем не менее, MySQL Support Team продолжала оказывать поддержку пакета GUI Tools до 30 июня 2010 г. В будущих версиях MySQL Workbench будет добавлен плагин для миграции (англ. migration plugin), полностью совместимый с MySQL Migration Toolkit, входящий в состав пакета GUI Tools.

Workbench

Первая версия MySQL Workbench была выпущена в сентябре 2005 года.

MySQL Workbench был первым семейством продуктов, который был доступен в двух вариантах. Чтобы привлечь разработчиков в основную команду разработки, коммерческая стандартная версия программы (англ. Standard Edition) предлагается поверх свободной версии (англ. Community Edition), распространяемой под лицензией GNU GPL. «Community Edition» является полнофункциональным продуктом, обладающим всеми основными возможностями коммерческого варианта. Являясь основой для всех будущих релизов, он будет получать пользу от всех будущих усилий, прилагаемых для развития продукта. «Standart Edition» расширяет «Community Edition» серией модулей и плагинов, позволяющих оптимизировать рабочий процесс и, тем самым, сэкономить время и избежать ошибок.

Возможности программы

  • Позволяет наглядно представить модель базы данных в графическом виде.
  • Наглядный и функциональный механизм установки связей между таблицами, в том числе «многие ко многим» с созданием таблицы связей.
  • Reverse Engineering — восстановление структуры таблиц из уже существующей на сервере БД (связи восстанавливаются в InnoDB, при использовании MyISAM — связи необходимо устанавливать вручную).
  • Удобный редактор SQL запросов, позволяющий сразу же отправлять их серверу и получать ответ в виде таблицы.
  • Возможность редактирования данных в таблице в визуальном режиме.

В чем разница между identifying and non-identifying relationships?

Теперь, собственно попробуем наладить взаимосвязи! Но прежде, разберемся с пунктирными и непунктирными линиями во взаимосвязях.

Если книга может существовать без владельца, а она может, тогда  non-identifying relationship

Если книга не может существовать без автора,а она не может, тогда  identifying relationship

Технически это отражается следующим образом

identifying relationship:

Delphi/Pascal

Parent
——
ID (PK)
Name

Child
——
ID (PK)
ParentID (PK, FK to Parent.ID) — notice PK
Name

1
2
3
4
5
6
7
8
9
10

Parent
——

ID(PK)

Name
 
Child
——

ID(PK)

ParentID(PK,FK toParent.ID)—notice PK

Name

non-identifying relationship:

Delphi/Pascal

Parent
——
ID (PK)
Name

Child
——
ID (PK)
ParentID (FK to Parent.ID) — notice no PK
Name

1
2
3
4
5
6
7
8
9
10

Parent
——

ID(PK)

Name
 
Child
——

ID(PK)

ParentID(FK toParent.ID)—notice no PK

Name

То есть, в случае identifying в ключ ребенка встроен ключ родителя. А в случае non-identifying, в ключе ребенка нет ключа родителя.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector