Моделирование данных, ограничения и проблемы с моей моделью - PullRequest
2 голосов
/ 06 марта 2012

Я разрабатываю приложение, которое позволит няням / няням найти детей, за которыми нужно ухаживать, а родителям - няням / няням, которые будут присматривать за своими детьми .

Мне бы хотелосьиметь единую таблицу базы данных ACCOUNT как для родителей, так и для детей.

Однако между учетными записями родителей и детей есть некоторые небольшие различия, т. е.

  • дочерние службы могут иметь учебную программу /резюме, прикрепленные к их учетной записи (материализуются RESUME таблицей базы данных)
  • учетные записи дочерней службы дополнительно уточняются статусами дочерней службы (няня, няня и т. д.) (материализуются таблицей базы данных CHILDMINDER_STATUS),У ребенка может быть один или несколько «статусов ребенка».

Я не уверен, какими должны быть отношения между ACCOUNT, RESUME и CHILDMINDER_STATUS ...

PS Я использую сервер MySQL.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что ACCOUNT, принадлежащих дочерней, имеет ноль или более ADVERTISEMENT, которые принадлежат только дочерней.То же самое с ACCOUNTs, принадлежащим родителю вместе с их ADVERTISEMENTs.

1 Ответ

1 голос
/ 10 марта 2012

Это работает - это отвечает на ваш вопрос? Другие таблицы будут следовать таким же образом.

create table account (
  id int unsigned auto_increment PRIMARY KEY,
  fname varchar(100),
  lname varchar(100),
  type enum('parent','childminder')
  -- etc - add other fields needed for both parents and childminders
) ENGINE=InnoDB;

create table resume (
  id int unsigned auto_increment PRIMARY KEY,
  account_id int unsigned,
  file_spec varchar(100),
  -- other fields as necessary
  CONSTRAINT `resume_account_id_fk` FOREIGN KEY (`account_id`) REFERENCES `account` (`id`)
) ENGINE=InnoDB;

create table childminder_status (
  id int unsigned auto_increment PRIMARY KEY,
  account_id int unsigned,
  status_description varchar(100),
  -- other fields as necessary
  CONSTRAINT `childminder_status_account_id_fk` FOREIGN KEY (`account_id`) REFERENCES `account` (`id`)
) ENGINE=InnoDB;
...