使用外键表属性作为FK的替代

时间:2015-12-23 16:10:34

标签: c# sql asp.net-mvc visual-studio-2015

我目前正在使用newid()为我的所有表格生成唯一标识符。显然,对于任何人来说,看起来非常难看,并且很难理解他们与之相关的数据。

例如,如果我有一张桌子:

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>
}

1 个答案:

答案 0 :(得分:0)

简而言之:您应该设计解决方案,甚至不要尝试在“最终用户”界面中显示PK / FK值。

系统生成的PK / FK值对数据库很重要,但对人不重要。 “自然”键很适合人类查看,并且用于数据库中的LOGIC,而不是数据库键本身。

就你决定用于PK / FK系统生成的值而言,使用newid()GUID与简单自动增量整数值的不同方案存在很多争议,但无论你喜欢什么,它们都是通常对用户没有多大意义,因此通常更好的做法就是永远不要将它们用于人类交互。

祝你好运!