2015-12-23 37 views
0

我目前使用newid()爲我的所有表生成唯一標識符。顯然,這些看起來相當醜陋,並且很難理解與其相關的數據,對於任何人都是如此。使用外鍵表屬性作爲FK的替代者

例如,如果我有一個表:

DesktopMake DektopType CPU DetailsID (foreign key) 

DetailsID目前這漫長的16位混搭的很難看的數字,但在Details表中的其他屬性,如:

PurchaseDate CurrentOwner Price 

這些比可怕的16位數字更相關,是否有一個過程(我可以在上述MVC應用程序中)顯示其他3個屬性,也許當用戶懸停在DetailsID上?爲了讓用戶更容易知道他們真正在看什麼?

預先感謝你,我確信這是可能的(最好不要說很快),但我不能爲我的生活找到合適的詞來搜索正確的東西!任何指導非常感謝。

查看包含「示例」表:

<table class="table"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.DesktopMake) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Accessory.MonitorType) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Component.CPU) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Detail.DetailsID) 
     </th> 
     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.DesktopMake) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Accessory.MonitorType) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Component.CPU) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Detail.DetailsID) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.DesktopID }) | 
      @Html.ActionLink("Details", "Details", new { id=item.DesktopID }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.DesktopID }) 
     </td> 
    </tr> 
} 
+0

您的視圖是怎樣的? – Shyju

+0

您可以在工具提示中顯示該信息。你嘗試過嗎? – Shyju

+0

在視圖中添加,對不起,我忘了添加它!工具提示會起作用,但它們很混亂,我希望有一個更可重複的解決方案? :) – Callum

回答

0

總之:你應該工程師的解決方案,甚至從來沒有嘗試在「最終用戶」界面顯示PK/FK值。

系統生成的PK/FK值對數據庫非常重要,但不適用於人員。 「自然」鍵對於人類來說是很好的選擇,並且在數據庫中用於LOGIC,而不是作爲數據庫鍵本身。在你決定使用PK/FK系統生成的值時,使用newid()GUID與簡單自動增量整數值的不同方案存在很多爭議,但無論您的偏好如何,它們通常對用戶來說沒有多大意義,所以通常不要將它們用於人機交互更好。

祝你好運!

+0

謝謝,假設這將減少對變通方法的需求等,如果這些字段只是沒有顯示,並有一個替代更友好的屬性可用,建議採取,感謝您的洞察力。 :) – Callum