2016-07-26 60 views
0

我有以下JSON文件:如何根據以下要求創建表格? [SQL]

"vehicle_number" : 91, 
"pit_stops" : [ { 
    "pit_in_elapsed_time" : 1874.0926, 
    "pit_out_elapsed_time" : 0.0 
}, { 
    "pit_in_elapsed_time" : 1992.9723, 
    "pit_out_elapsed_time" : 0.0 
}, { 
    "pit_in_elapsed_time" : 2862.2129, 
    "pit_out_elapsed_time" : 0.0 
} ], 

我的表有保留以下值:

  • 車輛
  • pit_int_elapsed_time
  • pit_out_elapse_time

如何基於此創建表?

create table pitstop (
vehicle varchar(50) not null, 
inTime varchar(50) not null, 
outTime varchar(50) not null, 
constraint pk_id primary key(inTime, outTime)) 

我不確定這是否是創建表的理想方式?

問候

編輯

我一直在想創建2個主表。一個用於車輛(vehicleID,pk,pitstopFK作爲外鍵)。

create table vehicles (  
vehicle varchar(50) primary key not null 
pitstops_fk int not null); 

而且進站表:

create table pitstops (
id int primary key autoincrement not null, 
inTime varchar(50) not null, 
outTime varchar(50) not null, 
constraint u_time UNIQUE (inTime, outTime)) 

車輛-----進站(1對多)

+0

這可能是爲其他車輛有完全一樣的(銀泰,outTime)......所以我想該主鍵也不會轉回去是合法的???你們覺得怎麼樣? – sebachili

回答

0

很難說太多,沒有更好的理解這個問題,你的試圖解決,但我會說:

  • 如果車輛ID始終是一個整數,一個無符號整數通常會比文本處理更好
  • 對於inTime和outTime列使用SQL日期類型將允許您使用SQL時間/日期操作。如果時間戳代表真實世界時間,則考慮DATETIME或TIMESTAMP,如果它們從比賽開始或類似事件開始經過秒數,則浮點數值類型可能是更好的選擇。
  • inTime和outTime的組合無法作爲主鍵,因爲正如您在註釋中所注意的那樣,它並不一定是唯一的。在考慮指定主鍵時,不要(僅)考慮唯一性,而要考慮如何引用其他表中的進站事件。在這種情況下,我可能會建議一個合成自動遞增的無符號整數作爲主鍵。
+0

感謝您的評論。 那麼,如果我把一個autoincremental id作爲PK我會讓表獲得重複值ID,車輛ID,inTime,outTime。 – sebachili

+0

說實話,主要關鍵應該由三個要素組成:車輛,inTime,outTime。但我認爲這是不對的。 – sebachili

+0

我們總是會決定要在何種程度上使用模式來強制執行數據規則。是的,對於合成PK,您可以使用相同的vehicleID,inTime和outTime具有多行,這將指示錯誤。但想必也有一個錯誤,即在同一時間和outTime範圍內重疊的車輛 - 您無法使用模式檢測到該車輛。 – thewmo

0

首先,如果是你想存儲在數據庫中的時間,我不會使用varchar。而是嘗試使用浮動或真實。

接下來的事情是,你應該把你的車也放在你的主鍵上。

我也會推薦給你的數據庫引入一個ID。

事情是這樣的:

CREATE TABLE pitstop (
ID int NOT NULL AUTO_INCREMENT, 
vehicle varchar(50) NOT NULL, 
inTime float NOT NULL, 
outTime float NOT NULL, 
constraint pk_id primary key(ID, vehicle)) 
+0

謝謝。我想我沒有很好地解釋自己。在表格中,我可以有重複的車輛,但有不同的(inTime,outTime)......好吧,我可能不得不創建兩個表格。一個車輛和另一個pitstops(inTime,outTime)????? – sebachili

+0

然後你應該像你說的那樣,爲車輛創建2個表格,用外部鍵盤爲特定車輛創建一個表格 – 2016-07-26 14:44:27