Russian Qt Forum
Июнь 16, 2024, 00:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: структура БД  (Прочитано 3449 раз)
Karl-Philipp
Гость
« : Август 31, 2009, 10:04 »

mysql.
Создаю БД с тремя таблицами

- buildings
  - rooms
    - seats
приблизительно набросал:
 
Код
SQL
 CREATE TABLE buildings  (buildingId INTEGER AUTOINCREMENT NOT NULL,
       title VARCHAR(100) NOT NULL,
       PRIMARY KEY (buildingId));
 
   CREATE TABLE rooms   (roomId INTEGER AUTOINCREMENT NOT NULL,
       title VARCHAR(100) NOT NULL,
       buildingId INTEGER NOT NULL,
       PRIMARY KEY (roomId),  
       FOREIGN KEY (buildingId) REFERENCES buildings(buildingId)
           ON UPDATE CASCADE
           ON DELETE RESTRICT
             ) ENGINE=InnoDB CHARACTER SET=UTF8;
 
 
   CREATE TABLE seats   (seatId INTEGER AUTOINCREMENT NOT NULL,
       title VARCHAR(100) NOT NULL,
       roomId INTEGER,
       buildingId INTEGER,
       PRIMARY KEY (seatId),
       FOREIGN KEY (roomId) REFERENCES rooms(roomId)
           ON UPDATE CASCADE
           ON DELETE RESTRICT,
       FOREIGN KEY (buildingId) REFERENCES buildings(buildingId)
           ON UPDATE CASCADE
           ON DELETE RESTRICT
             ) ENGINE=InnoDB CHARACTER SET=UTF8;
 
Правильно ли я связываю таблицу seats с buildings?
   
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Август 31, 2009, 10:36 »

Вы бы написали - зачем вам эти 3 таблицы, от самой задачи очень много зависит.
Записан
Karl-Philipp
Гость
« Ответ #2 : Август 31, 2009, 10:45 »

Есть несколько зданий, в них комнаты, в комнатах места (места - компьютеры).
Надо создать базу данных по занимаемым местам.
Записан
BlackTass
Гость
« Ответ #3 : Август 31, 2009, 10:51 »

а зачем вам вообще нужна связь мест со зданиями? вроде бы эта связь однозначно пойдет через таблицу комнат
Записан
Karl-Philipp
Гость
« Ответ #4 : Август 31, 2009, 10:56 »

вот это то и хотел уточнить - как правильно сделать Улыбающийся
выходит, что надо связывать места со зданиями через комнаты таким образом?
Код
SQL
CREATE TABLE seats   (seatId INTEGER AUTOINCREMENT NOT NULL,
...
       FOREIGN KEY (buildingId) REFERENCES rooms(buildingId)
           ON UPDATE CASCADE  
           ON DELETE RESTRICT
       ) ENGINE=InnoDB CHARACTER SET=UTF8;
upd: разобрался: эта связь вообще не нужна.
« Последнее редактирование: Август 31, 2009, 16:09 от terlan » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 22.