ER /关系表到数据库

时间:2019-12-02 03:01:31

标签: sql database foreign-keys relational-database entity-relationship

因此,对于以下描述,我具有以下SQL命令。我不确定我是否对约束​​特别是对于外键,何时不使用null以及何时不使用约束。有人可以根据数据库描述来验证命令是否正确吗?

  1. 汽车经销店具有唯一的业务ID号,经销店名称,城市,州和唯一的 网址。企业ID是一个介于1000-9999之间的数字。
  2. 销售人员具有名字,姓氏,年龄,性别和唯一的员工ID号。员工人数在100-999之间。
  3. 客户具有名字,姓氏,城市,州,性别,年龄和唯一的纳税人ID号。纳税人编号是9位数字。
  4. 汽车具有品牌,型号,年份,建议价格和唯一的车辆ID号。汽车可以具有(可能有多种)应建模为属性的颜色。注意:汽车的品牌是制造商(例如,福特,本田,宝马),型号是模型的名称(例如,思域,雅阁,CRX)。
  5. 销售人员为经销店工作。为了进入数据库,销售人员必须为经销商工作。但是,数据库中可能存在没有任何销售人员的经销店。经销商有许多为他们工作的销售员,而销售员可能为许多不同的经销商工作。该数据库应记录销售人员开始为经销商工作的开始日期。
  6. 经销自己的汽车。经销商可能拥有许多汽车,或者它们可能完全缺货而拥有零汽车。汽车只能由一个经销商拥有,并且必须由经销商拥有才能在数据库中。该数据库应记录经销商购买汽车的日期和经销商为汽车支付的价格。
  7. 销售人员向客户出售汽车。即使销售人员没有向客户出售任何汽车,也应将其存储在数据库中。但是,该数据库应仅存储有关从销售人员那里购买汽车的客户的信息。关于经销商拥有的汽车的信息,无论是否已售出,都应存储在数据库中。推销员只能将一辆特定的汽车出售给一个客户。同样,客户可能 从一个销售人员那里购买一辆特定的汽车。但是,客户可以从同一销售人员那里购买多辆汽车。当销售人员向客户出售汽车时,销售价格和日期应记录在数据库中。

create table Car_dealership(
Business_id int check ( 1000 >= business_id <= 9999),
b_name varchar(30) not null,
b_city varchar(20) not null,
b_state char(2) not null,
web_url varchar(100) not null,
primary key (Business_id)
);

create table salesperson (
employee_id int check ( 100 >= employee_id <= 999),
first_name varchar (30) not null,
last_name varchar (30),
age int check (0 < age < 130) , 
gender char(1),
/* assumed gender is either Male (M) or Female (F) */
primary key (employee_id)
);

create table customers (
taxpayer_id decimal(9,0),
first_name varchar (30) not null,
last_name varchar (30),
age int check (0 < age < 130), 
gender char(1),
/* assumed gender is either Male (M) or Female (F) */
city varchar (20),
state char(2),
primary key (taypayer_id),
);

create table cars (
vehicle_id int,
make varchar(30),
model varchar(30),
make_year year,
suggested_price int, 
business_id int, 
date_acquired date,
price_paid int,
primary key (vehicle_id),
foreign key(business_id) references Car_Dealerships (business_id)
);

create table car_colors (
vehicle_id int,
colors varchar (30),
primary key (vehicle_id),
foreign key(vehicle_id) references cars (vehicle_id)
);

create table works_for (
business_id int,
employee_id int,
start_date date not null,
primary key (business_id, employee_id),
foreign key(business_id) references Car_Dealerships (business_id),
foreign key(employee_id) references salesperson (employee_id) 
);

create table sells (
vehicle_id int,
taxpayer_id int,
employee_id int,  
sale_price int, 
date_sold date,
primary key (vehicle_id) ,
foreign key(vehicle_id) references cars (vehicle_id),
foreign key(taxpayer_id) references customers (taxpayer_id),
foreign key(employee_id) references salesperson (employee_id)
);

0 个答案:

没有答案