标签: data-modeling

数据模型和对象模型之间有什么区别?

CWM是数据建模

UML是对象建模.

有人可以解释一个外行人可以理解的区别吗?

data-modeling object-model

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

绘制数据库模型的最终程序是什么?

当我在一个新项目时,我做的第一件事就是设计一个数据库模型.为了可视化模型,我使用了一个7岁的Smartdraw版本.也许是时候换新的了.绘制数据库模型的最终程序是什么?Smartdraw仅适用于Windows.还有什么东西可以在unix上使用吗?

drawing data-modeling

15
推荐指数
3
解决办法
8475
查看次数

如何正确级联删除Core Data中的托管对象?

我有一个核心数据模型,它有三个实体:A,B和C.A与B有一对多的关系,B与C有多对多的关系.A的删除规则 - > B是"Cascade",B - > A是"No Action".B - > C的删除规则是"No Action",C - > B是"Deny".

我在A实体上执行删除时遇到问题.我想要发生的是以下内容:

  1. 我删除了一个A的实例(使用deleteObject:)
  2. 删除传播到与A关联的任何B(由于"级联"删除规则)
  3. 与A关联的所有B都将被删除
  4. 属于C的任何关系,其关联的B被删除,也被删除

这可能有点令人困惑,所以让我解释一下:当删除A时,删除所有关联的B.任何引用那些B的C都不能再引用它们了.

在我的测试中,我没有看到"Cascade"删除规则对我起作用.当我删除A时,我会processPendingChanges立即调用(只是为了确保删除已完成).然后我比较删除之前和之后NSManagedObjectContext中A和B的数量.A的实例已被正确删除,(总A的数量现在比删除前少一个).但是,B的数量保持不变.因此,似乎没有尊重"级联"删除规则.

我知道我可以手动完成A - > B关系,并手动删除每个B.然而,看起来这是Core Data免费提供的东西,所以除非Core Data不足,否则我不想这样做.有关使用"级联"删除规则的任何信息都是受欢迎的.

cocoa cascade core-data data-modeling

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

MySQL朋友表

我有一个MySQL数据库,我在其中存储有关每个用户的数据.

我想为每个用户添加一个朋友列表.我应该为数据库中的每个用户创建一个朋友表,还是有更好的方法?

mysql database-design data-modeling

15
推荐指数
2
解决办法
2万
查看次数

用于简单消息传递应用的Cassandra数据模型

我正在努力学习Cassandra并且总是找到最好的方法是从创建一个非常简单和小的应用程序开始.因此,我正在创建一个基本的消息传递应用程序,它将使用Cassandra作为后端.我想做以下事情:

  • 用户将使用用户名,电子邮件和密码创建一个帐户.电子邮件和密码可以随时更改.
  • 用户可以添加其他用户作为他们的联系人.用户可以通过搜索用户名或电子邮件来添加联系人.如果我添加一个用户他们是我的联系人,联系人不需要是相互意义的,我不需要等待他们接受/批准Facebook中的任何内容.
  • 消息从一个用户发送到另一个用户.发件人需要能够看到他们发送的消息(按时间排序)和发送给他们的消息(按时间排序).当用户打开应用程序时,我需要检查数据库以查找该用户的任何新消息.我还需要标记消息是否已被读取.

当我来自关系数据库的世界时,我的关系数据库看起来像这样:

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)

database data-modeling cassandra cqlsh

15
推荐指数
1
解决办法
1636
查看次数

美国邮政的Mysql数据类型(邮政编码)

我正在编写一个特定于美国的Web应用程序,因此其他国家/地区用于邮政编码的格式并不重要.我有一个美国邮政编码列表,我试图加载到包含的数据库表中

  • 5位数我们的邮政编码
  • 纬度
  • 经度
  • usps分类代码
  • 州代码

邮政编码是主键,因为它是我将要查询的内容.我开始使用medium int 5但是会截断带有前导零的邮政编码.

我考虑使用char5,但我担心索引char变量的性能损失.

所以我的问题是存储邮政编码的最佳mysql数据类型是什么?

注意:我在其他几个与邮政编码有关的问题中都看到过.我只对美国5位数的邮政编码感兴趣.因此,没有必要考虑其他国家的邮政编码格式.

mysql sql zipcode database-design data-modeling

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

在企业架构师的数据建模中使用乌鸦脚符号

我只能在企业架构师中使用传统的0 ..*样式多重性而不是乌鸦脚连接器.我尝试使用不同的绘图样式,仍然无法弄清楚如何更改连接器.任何帮助将非常感谢:)

data-modeling enterprise-architect multiplicity

14
推荐指数
1
解决办法
4880
查看次数

关系数据库设计问题 - 代理键还是自然键?

哪一个是最佳实践,为什么

a)类型表,代理/人工密钥

外键是user.typetype.id: 替代文字

b)类型表,自然键

外键是user.typetype.typeName: 替代文字

sql database-design data-modeling surrogate-key natural-key

13
推荐指数
2
解决办法
2983
查看次数

我如何在面向文档的数据库系统(如RavenDB)中建立层次和关系数据?

面向文档的数据库(特别是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

12
推荐指数
1
解决办法
972
查看次数

如何使用MongoDB为"喜欢"的投票系统建模

目前我正在开发一款移动应用.基本上人们可以发布他们的照片,而粉丝可以喜欢像Instagram这样的照片.我使用mongodb作为数据库.像Instagram一样,单张照片可能会有很多喜欢.因此,使用带有索引的单个"喜欢"的文档似乎不合理,因为它会浪费大量内存.但是,我希望用户快速添加.所以我的问题是如何建模"喜欢"?基本上,数据模型与instagram非常相似,但使用的是Mongodb.

data-modeling mongodb mongodb-query

12
推荐指数
1
解决办法
4980
查看次数