相关疑难解决方法(0)

设计友谊数据库结构:我应该使用多值列吗?

假设我有一个名为 的表User_FriendList,它具有以下特征:

CREATE TABLE User_FriendList (
    ID ...,
    User_ID...,
    FriendList_IDs...,
    CONSTRAINT User_Friendlist_PK PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)

让我们假设该表包含以下数据:

 +----+---------+---------------------------+
 | 身份证| 用户 ID | 好友            列表_ID |
 +----+---------+---------------------------+
 | 1 | 102 | 2:15:66:35:26:17: |
 +----+---------+---------------------------+
 | 2 | 114 | 1:12:63:33:24:16:102 |
 +----+---------+---------------------------+
 | 3 | 117 | 6:24:52:61:23:90:97:118 |
 +----+---------+---------------------------+

注:该“:”当(冒号)是分隔符爆炸在PHP成array

问题

所以:

  • 这是一个方便的方式来“存储”的IDsFriendList

  • 或者,相反,我是否应该让FriendId每一行只有一个值,并且当我需要检索给定列表的所有行时,只需执行如下查询SELECT * FROM UserFriendList WHERE UserId = …

normalization foreign-key database-design relational-theory

13
推荐指数
1
解决办法
1万
查看次数

具有有效性间隔的可移植表设计(历史化、时态数据库)

我正在为一个应用程序设计一个数据模型,它必须跟踪数据的变化。

第一步,我的应用程序必须支持PostgreSQL,但我想在第二步中添加对其他 RDBMS(尤其是 Oracle 和 MS SQL 服务器)的支持。因此,我想选择使用较少专有功能的便携式数据模型。(表的 DDL 可能因 RDBMS 供应商而异。但应用程序中的 SQL 查询/语句对于所有支持的供应商应尽可能相同。)

例如,假设有users一张users_versions桌子。users_versions在 上有一个外键users

表的示例可能如下所示:

users
----------------
id | username
---------------- 
 1 | johndoe
 2 | sally

users_versions --> references id of user (userid)
---------------------------------------------------------------------------
id | userid | name     | street      | place     | validfrom  | validuntil
---------------------------------------------------------------------------
 1 |      1 | John Doe | 2nd Fake St | Faketown  | 2018-01-04 | 2018-01-05
 2 |      1 …
Run Code Online (Sandbox Code Playgroud)

postgresql index oracle database-design sql-server

5
推荐指数
1
解决办法
533
查看次数