我想知道是否有人可以提供一些有关构建数据模型以实现下述简单系统的有效方法的概念建议.对于以非关系方式思考并且想要尝试避免任何明显的陷阱,我有点新鲜.我的理解是,基本原则是"存储便宜,不要担心数据重复",就像在规范化的RDBMS中一样.
我想建模的是:
一篇可以给出0-n标签的博客文章.许多博客文章可以共享相同的标签.检索数据时,希望允许检索与标记匹配的所有文章.在许多方面与stackoverflow中采用的方法非常相似.
我的正常心态是在标签和博客文章之间建立多对多的关系.然而,我在GAE的背景下考虑这将是昂贵的,虽然我已经看到它的例子.
也许使用包含每个标记的ListProperty作为文章实体的一部分,以及第二个数据模型来跟踪标记在添加和删除时的情况?这种方式不需要任何关系,ListProperty仍然允许任何匹配的列表元素将返回结果的查询.
有关GAE最有效方法的任何建议吗?
如果我使用的是.Net和SQL Server 2008,那么在数据库中存储颜色的最佳方式是什么?我应该使用ToString还是将其转换为整数,还是其他什么?
编辑:
我想要的颜色是能够检索它并在屏幕上以指定的颜色绘制一些东西.我不需要能够查询它.
表的布尔字段可以使用正面和负面命名...
例如,调用一个字段:
"ACTIVE" , 1=on / 0=off
or
"INACTIVE" , 0=on / 1=off
Run Code Online (Sandbox Code Playgroud)
问题: 是否有正确的方法来做出这种类型的表设计决策,还是任意的?
我的具体示例是带有bool字段(私有/公共)的消息表.当用户输入新消息时,将使用表单复选框设置此字段.命名"公共"与"私人"字段有什么好处?
谢谢.
选择好的主键,候选键和使用它们的外键是一项非常重要的数据库设计任务 - 与科学一样多的艺术.设计任务具有非常具体的设计标准.
标准是什么?
database database-design foreign-keys data-modeling primary-key
如果我想创建一个允许用户拥有0个或更多"朋友"的网站,我将如何在数据库中建模这样的关系?这样简单的工作会是什么:
Table Friends
- Id (PK)
- UserId (FK)
- FriendId (FK)
Run Code Online (Sandbox Code Playgroud)
???
这会让我以后做像Facebook这样的事情(例如"你的3个朋友知道这个用户,也许你也这样做了")?或者类似6度到凯文培根的东西?
编辑1:
Table Friends
- UserId (FK)
- FriendId (FK)
- Status ('Pending', 'Approved', 'Rejected', 'Blocked'?)
Run Code Online (Sandbox Code Playgroud) 我有以下数据结构:
//property Notification
abstract class BindableBase { }
//base class for all tenant-scoped objects
abstract class TenantModelBase : BindableBase
{
int TenantId;
}
abstract class Order : TenantModelBase
{
Customer Customer; //works: mapped using TenantId and CustomerId
Product Product; //again, works with TenantId and ProductId
string ProductId;
string CustomerId;
}
class Customer: TenantModelBase
{
string CustomerId;
}
class Product : TenantModelBase
{
string ProductId;
}
class SpecialOrder : Order
{
OtherClass OtherClass; //this fails!, see below
string OtherClassId;
}
class …Run Code Online (Sandbox Code Playgroud) 在关系数据库中,我可以有一个表Person和一个表Hobby.每个人都可以拥有零,一个或多个爱好,而且我还想记录每个人的爱好优先级.
我可以创建一个关系表用2个外键PersonFK和HobbyFK,和一个普通的列Priority.
在datomic中,为了建模一个简单的n:m关系(没有优先级),我可能会创建一个带有基数的类型属性ReferenceMany,我将其用于Person实体.
但是,我怎么会去排位是相对于能够存储的优先级?是否必须类似于关系情况,即通过为该关系创建新的实体类型?还是有更好的方法吗?使用一些元数据设施或什么?
我在oracle sql developer 4.0.2.15上.我使用数据建模器生成实体关系图,如何将其保存为图像?我需要它来为我的项目创建文档.
entity data-modeling oracle-sqldeveloper entity-relationship-model
建议在cassandra中围绕查询进行数据建模.但是,如果我模型将列设置为聚类列以进行基于它的排序,并且该对象是动态的,因为它是聚类列,我无法更新其值,因为它现在属于该表的主键.在这种情况下,有两个选择
在Cassandra数据建模中还有其他有效的方法吗?
例如.我有table_A和查询获取具有特定状态的所有行table_A_by_state.但是,由于状态将是动态的,并且您需要更新table_A_by_state中的状态,该状态随附我上面提到的选项.有其他人遇到同样的问题还是有其他方法的数据建模这个问题?
table_A:列:id(K),名称,状态
table_A_by_state:列:id(K),state(C),name
我被要求描述这个数据结构的错误,以及我将如何改进它.
这是数据结构:

这是我到目前为止:
汽车价格只有在汽车在陈列室中时才会设定,将汽车价格放在汽车表中会更有意义
将NULL数据存储在Car Table中是没有意义的,最好有一个类似于此的布局:

需要有一个数量标题来显示有多少特定的汽车在陈列室中,因为一些展厅有多辆相同的汽车
我制作的新表格仍然有重复的数据,我依旧记得在绘制数据结构时是不是没有,所以我想我需要制作第3张表格?我真的不确定......
我只需要帮助解决当前数据结构的问题,如果有任何方法可以改进它,那么任何帮助都会受到赞赏.
data-modeling ×10
database ×3
sql ×3
.net ×1
boolean ×1
c# ×1
cassandra ×1
datomic ×1
entity ×1
foreign-keys ×1
many-to-many ×1
multi-tenant ×1
mysql ×1
primary-key ×1
python ×1
sql-server ×1
t-sql ×1