CWM是数据建模
UML是对象建模.
有人可以解释一个外行人可以理解的区别吗?
当我在一个新项目时,我做的第一件事就是设计一个数据库模型.为了可视化模型,我使用了一个7岁的Smartdraw版本.也许是时候换新的了.绘制数据库模型的最终程序是什么?Smartdraw仅适用于Windows.还有什么东西可以在unix上使用吗?
我有一个核心数据模型,它有三个实体:A,B和C.A与B有一对多的关系,B与C有多对多的关系.A的删除规则 - > B是"Cascade",B - > A是"No Action".B - > C的删除规则是"No Action",C - > B是"Deny".
我在A实体上执行删除时遇到问题.我想要发生的是以下内容:
deleteObject:)这可能有点令人困惑,所以让我解释一下:当删除A时,删除所有关联的B.任何引用那些B的C都不能再引用它们了.
在我的测试中,我没有看到"Cascade"删除规则对我起作用.当我删除A时,我会processPendingChanges立即调用(只是为了确保删除已完成).然后我比较删除之前和之后NSManagedObjectContext中A和B的数量.A的实例已被正确删除,(总A的数量现在比删除前少一个).但是,B的数量保持不变.因此,似乎没有尊重"级联"删除规则.
我知道我可以手动完成A - > B关系,并手动删除每个B.然而,看起来这是Core Data免费提供的东西,所以除非Core Data不足,否则我不想这样做.有关使用"级联"删除规则的任何信息都是受欢迎的.
我有一个MySQL数据库,我在其中存储有关每个用户的数据.
我想为每个用户添加一个朋友列表.我应该为数据库中的每个用户创建一个朋友表,还是有更好的方法?
我正在努力学习Cassandra并且总是找到最好的方法是从创建一个非常简单和小的应用程序开始.因此,我正在创建一个基本的消息传递应用程序,它将使用Cassandra作为后端.我想做以下事情:
当我来自关系数据库的世界时,我的关系数据库看起来像这样:
UsersTable
username (text)
email (text)
password (text)
time_created (timestamp)
last_loggedIn (timestamp)
------------------------------------------------
ContactsTable
user_i_added (text)
user_added_me (text)
------------------------------------------------
MessagesTable
from_user (text)
to_user (text)
msg_body (text)
metadata (text)
has_been_read (boolean)
message_sent_time (timestamp)
Run Code Online (Sandbox Code Playgroud)
通过阅读几本Cassandra教科书,我想到了如何建模数据库.我主要关心的是以非常有效的方式对数据库进行建模.因此,我试图避免二级索引等事情.这是我的模型到目前为止:
CREATE TABLE users_by_username (
username text PRIMARY KEY,
email text,
password text
timeCreated timestamp
last_loggedin timestamp
)
CREATE TABLE users_by_email (
email text PRIMARY KEY,
username text,
password text
timeCreated timestamp
last_loggedin timestamp
)
Run Code Online (Sandbox Code Playgroud)
为了均匀地传播数据并读取最少量的分区(希望只有一个),我可以根据用户的用户名或电子邮件快速查找用户.这方面的缺点显然是我的数据增加了一倍,但是存储成本非常便宜,所以我觉得这是一个很好的权衡,而不是使用二级索引.最后登录也需要两次写入,但Cassandra在写入时很有效,所以我相信这也是一个很好的权衡.
对于联系人,我想不出任何其他方式来模拟这个,所以我建模它非常类似于我在关系数据库中的方式.根据我读过的书,这是一个非常规范化的设计我应该对性能有好处吗?
CREATE TABLE "user_follows" (
follower_username text,
followed_username …Run Code Online (Sandbox Code Playgroud) 我正在编写一个特定于美国的Web应用程序,因此其他国家/地区用于邮政编码的格式并不重要.我有一个美国邮政编码列表,我试图加载到包含的数据库表中
邮政编码是主键,因为它是我将要查询的内容.我开始使用medium int 5但是会截断带有前导零的邮政编码.
我考虑使用char5,但我担心索引char变量的性能损失.
所以我的问题是存储邮政编码的最佳mysql数据类型是什么?
注意:我在其他几个与邮政编码有关的问题中都看到过.我只对美国5位数的邮政编码感兴趣.因此,没有必要考虑其他国家的邮政编码格式.
我只能在企业架构师中使用传统的0 ..*样式多重性而不是乌鸦脚连接器.我尝试使用不同的绘图样式,仍然无法弄清楚如何更改连接器.任何帮助将非常感谢:)
哪一个是最佳实践,为什么?
外键是user.type到type.id:

外键是user.type到type.typeName:

面向文档的数据库(特别是RavenDB)真的很吸引我,而且我想和他们玩一下.然而,作为一个非常习惯于关系映射的人,我试图想到如何在文档数据库中正确建模数据.
假设我的C#应用程序中有以下实体的CRM(省略了不需要的属性):
public class Company
{
public int Id { get; set; }
public IList<Contact> Contacts { get; set; }
public IList<Task> Tasks { get; set; }
}
public class Contact
{
public int Id { get; set; }
public Company Company { get; set; }
public IList<Task> Tasks { get; set; }
}
public class Task
{
public int Id { get; set; }
public Company Company { get; set; }
public Contact Contact { get; set; }
} …Run Code Online (Sandbox Code Playgroud) data-modeling document-based-database document-database ravendb
目前我正在开发一款移动应用.基本上人们可以发布他们的照片,而粉丝可以喜欢像Instagram这样的照片.我使用mongodb作为数据库.像Instagram一样,单张照片可能会有很多喜欢.因此,使用带有索引的单个"喜欢"的文档似乎不合理,因为它会浪费大量内存.但是,我希望用户快速添加.所以我的问题是如何建模"喜欢"?基本上,数据模型与instagram非常相似,但使用的是Mongodb.
data-modeling ×10
mysql ×2
sql ×2
cascade ×1
cassandra ×1
cocoa ×1
core-data ×1
cqlsh ×1
database ×1
drawing ×1
mongodb ×1
multiplicity ×1
natural-key ×1
object-model ×1
ravendb ×1
zipcode ×1