簡體   English   中英

Sql Server:創建具有多個外鍵的表

[英]Sql Server: Creating a table with multiple foreign keys

我必須在 SQL Server 中創建一組表。

那些是:

BusCity:旅游城市
BusType:交流/非交流
BusInformation:姓名、出行城市、車費等信息(由管理員添加)
BookingDetails:在客戶預訂旅行后存儲預訂詳細信息。
BookedStatus:巴士的可用性。

我在創建這些表時遇到問題。

以下是我的 DDL 代碼:

Create Table Customer  
(  
CustomerId int primary key identity(100,1),  
CustomerName varchar(100) not null,  
CustomerEmail varchar(100) not null,  
CustomerPassword varchar(50) not null,  
CustomerPhone int not null,  
)

Create Table BusCity  
(  
BusCityId varchar(10) primary key,  
BusCityName varchar(100) not null unique  
) 

Create Table BusType  
(  
BusTypeId int identity(10,1) primary key,  
BusTypes varchar(100) not null unique  
)

Create Table BusInformation  
(  
BusInformationId varchar(10) primary key,  
BusName varchar(100) not null unique,  
BusNumOfSeats int not null,  
BusFromCity varchar(10) not null,  
BusToCity varchar(10) not null,  
BusTravelPrice int not null,  
BusTypeId int,  
constraint Fk_BusInfo_BusType Foreign key(BusTypeId) references BusType(BusTypeId), 
constraint Fk_BusInfo_BusFromCity Foreign key(BusFromCity) references BusCity(BusCityId),  
constraint Fk_BusInfo_BusToCity Foreign key(BusToCity) references BusCity(BusCityId)  
)

Create Table BookingDetails  
(  
BookingDetailsId int identity(2000,1) primary key,  
CustomerId int,  
BusInformationId varchar(10),  
BookingDateofTravel Date,  
BookingFromCity varchar(10) not null,  
BookingToCity varchar(10) not null,  
BookingNumOfSeats int not null,  
BookingTravelPrice int not null,  
constraint Fk_BookingDetails_BusInformation Foreign key(BusInformationId)references BusInformation(BusInformationId),  
constraint Fk_BookingDetails_Customer Foreign key(CustomerId)references Customer(CustomerId),  
constraint Fk_BusDetails_BusFromCity Foreign key(BookingFromCity) references BusCity(BusCityId),  
constraint Fk_BusDetails_BusToCity Foreign key(BookingToCity) references BusCity(BusCityId)  
)

Create Table BookedStatus
(  
BookedStatusId int identity(3000,1) primary key,  
AvailableSeats int not null,  
BookedDate Date,  
IsAvailable bit,  
BusInformationId varchar(10),  
constraint Fk_BookedStatus_BusInfo Foreign key(BusInformationId)references BusInformation(BusInformationId)   
)

我的問題是,
1.我是否正確映射了表之間的表關系。
2.在一個表中包含多個外鍵列( BusInformation、BookingDetails )。

請幫助我。

在線巴士票預訂

這個項目有兩個用戶角色——第一個是管理員,第二個是客戶。 該項目允許客戶在線預訂旅行機票。

行政人員

網站管理員用戶可以添加城市信息、巴士信息、巴士路線(從城市到城市)、巴士詳情(巴士信息/每個城市到城市的巴士票價)、每輛巴士的座位數、每輛巴士的可用座位預訂日期、可用巴士和已預訂狀態。

顧客

客戶可以通過巴士名稱/出行城市起止點/單程或返程出行日期和價格搜索可用的巴士預訂車票。

  • 需要有一個搜索功能來列出所有可用的公共汽車和公共汽車的詳細信息。

  • 對於搜索和詳細信息,客戶無需登錄。任何用戶都可以搜索和檢查可用的巴士及其路線。

  • 但是對於訂票,客戶需要登錄,客戶可以注冊到網絡應用程序訂票。

  • 客戶登錄后,可以通過輸入他們需要的座位數、旅行日期和從城市來預訂巴士票
    和城市。

  • 暫時不需要支付細節。

  • 客戶可以注冊和預訂門票。 管理員可以查看所有預訂信息。

我不確定您是否提供了足夠的信息來回答 1) - 我們對您的數據之間的相互依賴關系知之甚少,無法對所有可能的關系發表評論

在創建表中指定列時可以創建外鍵:

CREATE TABLE BusBlah (
  BusID int PRIMARY KEY,
  StatusID int not null REFERENCES StatusesTable(StatusIDColumnInStatusesTable)
  ...
)

或者可以在 ALTER 之后添加它們(這是 SQL Management Studio 的方式)

ALTER TABLE BusBlah  
ADD CONSTRAINT SomeConstraintName FOREIGN KEY (StatusID)  
REFERENCES StatusesTable (StatusIDColumnToReference) ;  

最后,如果你想要一套完美的腳本,你總是可以在 SQLServer management studio 中直觀地設計你的表,包括關系,然后讓它編寫腳本並查看結果。 如果您的查詢與學術練習有關,也許不要提交 SSMS 制作的腳本,因為很明顯它們是機器准備好的,但您可以將它們用作檢查您在做什么的基礎

如果這不是學術練習,我通常認為在 SSMS 中直觀地設計這些東西是一種更好的指導方式。 如果您將它們放入數據庫遷移或其他以編程方式從頭開始設置新數據庫的機制中,您始終可以按上述方式編寫腳本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM