【問題描述】現有乙個商店的資料庫(shopping),記錄客戶及其購物情況,由以下四個關係組成:
a)客戶表customer:儲存客戶資訊,包括客戶號customerid、客戶姓名cname、位址address、電子郵件email、性別gender、身份證號cardid、**號碼telcode。
b)商品表goods:儲存商品資訊,包括商品號goodsid、商品名稱goodsname、單價unitprice、商品類別category。
c)訂單表orders:儲存客戶與訂單之間的關係,包括訂單號、客戶號、下單日期。
d)訂單商品表ordergoods:儲存每個訂單中包含的商品資訊,包括訂單號ordersid、商品號、商品數量goodsnum。
(1)請用sql 語句建表,並在定義中進行如下宣告:
每個表的主外來鍵;
客戶的姓名不能為null ;
電子郵件中必須唯一,且必須包含@和.;
客戶的性別必須是男或者女,預設為男;
商品單價必須大於0;
購買數量必須在到0之間30;
create table customer(
customerid char(20) primary key,
cname varchar(20) not null,
address varchar(50),
email varchar(50) unique,
gender char(2) default '男',
cardid char(18),
telcode char(11),
check(email like'%@%.%' ),
check(gender in ('男','女'))
)create table goods(
goodsid varchar(20) primary key,
goodsname varchar(25),
unitprice decimal(10,2) check(unitprice>0),
category varchar(20)
)create table orders(
ordersid varchar(20) primary key,
customerid char(20) not null,
goodstime datetime
foreign key(customerid) references customer(customerid),
)create table ordergoods(
ordersid varchar(20) constraint fk_ordergood_orders foreign key(ordersid) references orders(ordersid) not null,
goodsid varchar(20) constraint fk_ordergood_goods foreign key(goodsid) references goods(goodsid) not null,
goodsnum int check(goodsnum>=0 and goodsnum<=30)
1.設定客戶表customer的「身份證號不能重複」。
alter table customer
add constraint unique_customer unique(cardid)
2.設定客戶表customer的「客戶的住址只能是海淀、朝陽和東城。」
alter table customer
add constraint ck_address check(address like'%海淀%' or address like'%朝陽%'or address like'%東城%')
alter table orders
add constraint df_goodstime default getdate() for goodtime
資料庫 資料完整性約束
資料完整性 儲存在資料庫中的所有資料值均正確的狀態。完整性約束 防止不符合規範的資料進入資料庫,在使用者對資料進行插入 修改 刪除等操作時,dbms自動按照一定的約束條件對資料進行監測,使不符合規範的資料不能進入資料庫,以確保資料庫中儲存的資料正確 有效 相容。1.實體完整性 實體完整性是對主鍵的約...
資料庫概論 完整性約束
一 資料庫的完整性約束 資料的正確性和相容性 注 資料的完整性和安全性是兩個不同的概念。資料庫的完整性是為了防止資料庫中含有不符合語義的的資料,也就是防止資料庫中含有不正確的資料。資料庫中的安全性是為了保護資料庫防止惡意的破壞和非法的訪問。二 為維護資料庫的完整性,dbmx必須能夠 1 提供定義完整...
Oracle資料庫完整性約束
資料庫的完整性是指資料的正確性和相容性。資料的正確性是指符合現實世界語義 反映當前實際狀況的 資料的相容性是指資料庫同一物件在不同關係表中的資料是符合邏輯的。約束 1 實體完整性 是通過主碼的定義實現的,一旦某個屬性或屬性組被定義為主碼,該主碼的每個屬性就不能為空值,並且在表中不能出現主碼值完全相同...