bra*_*ter 5 mysql erd database-design
我使用 mysql 作为我的后端数据库。这是用例;
AHolidayPackage配置了一些默认值offerings。这些默认产品可以根据提供的选项升级/降级。每个产品属于不同类型的variants:
首先,我想设计 Origin city 的用例:
有一个 GOA 包。它可以根据起源城市提供 3 种变体;
(粗体表示默认选择)
一种。和b. 用户可以从新德里或孟买飞往 GOA。
C。Goa是Land套餐,用户可以自己到达Goa,是一个独立的度假套餐。
此外,我们需要进一步支持以下具有变体类别(Origin City)的用例:
在数据库中,我需要对这些关系进行建模。这是我的想法。
HolidayPackage有MANY到MANY有关系Destination(读起点城市)。这将处理以下选项:
我的顾虑:
default在数据库级别标记包的选项?小智 0
我发现使用整数标志最适合关系数据库以及当您必须满足您所解释的条件时。通过将默认来源设置为您想要默认的城市的ID,我相信您可以实现您所追求的目标。此外,如果在假期套餐中,“出发地”一栏为 0,则您可以假设没有旅行行程,并将其视为已到达目的地。
一个想法是做这样的事情:
CREATE TABLE `cities` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`city_name` VARCHAR(255) NOT NULL,
`flag` TINYINT(3) NOT NULL DEFAULT 0);
CREATE TABLE `hotels` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`hotel_name` VARCHAR(255) NOT NULL,
`city_id` INT UNSIGNED NOT NULL);
CREATE TABLE `HoldayPackage` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`origin` INT UNSIGNED NOT NULL default 0, //when origin=0, there is no travel leg, otherwise it's relative to the cities.id table
`destination` INT UNSIGNED NOT NULL DEFAULT 1, //foreign key to cities table again, using 1 as the default assuming the first entry you make is 'GOA'
`hotel` INT UNSIGNED NOT NULL, //foreign key to a hotels table
`flag` TINYINT(3) NOT NULL DEFAULT 0);
Run Code Online (Sandbox Code Playgroud)
作为单独的命令列表,我们可以将表类型更改为 innoDB(真正的关系数据库所需)及其外键:
alter table `cities` type=innodb;
alter table `hotels` type=innodb;
alter table `HoldayPackage` type=innodb;
alter table `HoldayPackage` add constraint destination_fk foreign key (destination) references cities(id) on update cascade on delete cascade;
alter table `hotels` add constraint city_fk foreign key (city_id) references cities(id) on update cascade on delete cascade;
Run Code Online (Sandbox Code Playgroud)
我希望这就是您正在寻找的!
| 归档时间: |
|
| 查看次数: |
939 次 |
| 最近记录: |