Tag: 数据库设计

如何组织此表,以便可以访问它,具体取决于访问它的对象的类型

我有这个表包含一个名为’icon_for’的字段,我一直用它来检查图标是否可用于’用户’或’问候’。 这显然不是最好的方法,就好像我想使用一个图标来说“问候”和“用户”,甚至是其他一些我会被卡住的对象。 我是否需要创建另一个名为icons_object的表,然后列出icon_id和object_name? 好像我必须做很多重复icon_id的,如果一个图标用于几个对象,但这是要走的路吗? 另外Rails中的这个表关联是什么。 假设表名为icons_objects。 然后在Rails中它会是 Icon.rb icon has_many:icon_objects ????? 这里完全混淆所以任何对NOOB的帮助都会受到赞赏。 有没有办法做到这个规范化?

Rails ActiveRecord和DB规范化

将可选的1:1属性分解为各自独立的模型有哪些优缺点。 例如,我刚刚遇到了这样的Rails代码: class Dogs << ActiveRecord::Base # :id (pk), :breed, :weight, :height, :tail_length end class DogSpotsInfo << ActiveRecord::Base # :dog_id (pk), :spot_color, :avg_spot_size, :num_spots end 但这就是我将如何做到这一点(必要时将spot字段保留为null): class Dogs << ActiveRecord::Base # :id, :breed, :weight, :height, :tail_length, :spot_color, :avg_spot_size, :num_spots end 在数据库级别,我认为唯一的区别是涉及可选属性的查询需要另一个连接吗? 前一种方法还有其他缺点吗? 有没有专业人士? 编辑: 我想在一张巨大的狗桌上,据说20%的狗有斑点,也许一个亲,前一种方法是更快的顺序扫描,但我不是100%肯定,如果这是唯一的亲,它似乎是过早的优化。 我能想到的另一个专业是它让模型更小更整洁。 但如果这是目标,也许你可以在不影响数据库结构的情况下通过使用像has_spots :spot这样的东西来做到这has_spots :spot ? 这里的最佳做法是什么?

选择* sql query vs选择特定列sql查询

可能重复: 为什么SELECT *被认为有害? 可能是一个数据库nOOb问题。 我们的应用程序有如下表格 表WF Field | Type | Null | Key | Default | Extra | +——————–+————-+——+—–+———+—————-+ | id | int(11) | NO | PRI | NULL | auto_increment | | children | text | YES | | NULL | | | w_id | int(11) | YES | | NULL | | | […]

处理“超标准化”数据

我的雇主,一家小型办公用品公司,正在转换供应商,我正在查看他们的电子内容,以提出一个强大的数据库架构; 我们以前的模式几乎只是在没有任何想法的情况下被抛在一起,而且它几乎导致了一个具有损坏的,不一致的信息的无法忍受的数据模型。 新供应商的数据比旧供应商的数据要好得多,但他们的数据就是我称之为超标准化的数据 。 例如,他们的产品类别结构有5个级别:主要部门,部门,类,子类,产品块。 此外,产品块内容具有产品的长描述,搜索术语和图像名称(想法是产品块包含产品和所有变体 – 例如特定笔可能有黑色,蓝色或红色墨水;所有这些项目基本上是相同的,所以它们适用于单个产品块)。 在我给出的数据中,这表示为产品表(我说“表”,但它是带有数据的平面文件),其中引用了产品块的唯一ID。 我试图提出一个强大的模式来容纳我提供的数据,因为我需要相对较快地加载它,他们给我的数据似乎与他们的数据类型不匹配在他们的样本网站( http://www.iteminfo.com )上提供演示。 无论如何,我不打算重复使用它们的表示结构,所以这是一个没有实际意义的点,但我正在浏览网站以获得有关如何构建事物的一些想法。 我不确定的是我是否应该以这种格式保存数据,或者例如使用自引用关系将Master / Department / Class / Subclass合并到单个“Categories”表中,并将其链接到a产品块(产品块应该保持独立,因为它不是“类别”本身,而是一组给定类别的相关产品)。 目前,产品块表引用了子类表,因此如果将它们合并在一起,这将更改为“category_id”。 我可能会创建一个电子商务店面,利用Ruby on Rails中的这些数据(或者这是我的计划,无论如何),所以我试图避免以后遇到障碍或者有一个臃肿的应用程序 – 也许我我想的太多了,但我宁愿安全而不是抱歉; 我们之前的数据真是一团糟,由于数据不一致和不准确,使公司损失了数万美元。 此外,我将通过确保我的数据库是健壮的并强制执行约束(我计划在应用程序级别执行它)来稍微脱离Rails约定,所以这也是我需要考虑的事情。 你会如何解决这样的情况? 请记住,我已经将数据加载到模拟表结构的平面文件中(我有文档说明哪些列是哪些列以及设置了哪些引用); 我正在试图决定是否应该像现在这样保持它们的正常化,或者我是否应该寻求巩固; 我需要知道每个方法将如何影响我使用Rails对网站进行编程的方式,因为如果我进行整合,单个表中基本上会有4个“级别”的类别,但这似乎比单独的表更易于管理每个级别,因为除了Subclass(直接链接到产品块)之外,它们除了显示其下的下一级别类别之外什么都不做 。 对于像这样处理数据的“最佳”方式,我总是感到茫然 – 我知道“正常化直到它受到伤害,然后进行反规范化直到它起作用”这一说法,但我直到现在才真正实现它。

如何在双边市场中构建关系表

我真的很想解决这个问题,会喜欢一些额外的想法。 这是基本的背景: Users既可以列出要借出的items ,也可以requests借用物品 Requests由想要借用某些内容的users发布。 每个request可能包含多个items Items是预定义的(即,POST表单是一个复选框),并由想要借出它们的users列出,然后由提交request其他users借用 工作流程: John是一名用户,并从6/5到6/8提交帐篷请求 控制器会查找拥有6/5到6/8可用帐篷的所有用户(除了John) 联系此用户列表以查看谁想为John提供帐篷 无论谁对约翰作出肯定回应,其表中的项目自动更新为6/5至6/8不再可用 John和其他用户连接以进行交换 到目前为止我的想法: Users表has_many :items和has_many :requests Requests表belongs_to :users Items表belongs_to :users 我的大脑无法处理的额外复杂性: 一个request可以包含多个items ,并且我被告知不要在一个单元格中接受items作为序列化数组,因此我不确定如何关联request和item 。 在上表中, items也belong_to requests ? 如果是的话,这似乎意味着user必须request特定item而我希望用户能够搜索帐篷,并查看所有可用帐篷的用户列表 Requests包含start_date和end_date属性,这些属性需要与item可用时进行比较。 现在我在items表中思考,需要有一个列存储项目将被使用的日期(即,不可用)。 但是这个数据将再次成为一个数组。 例如,可以请求帐篷(并且用户响应OK)从6/5到6/8,然后再从6/10到6/15,然后再从7/8到7/9。 所以我需要第四张桌子吗? Items将是预定义的列表,例如帐篷,睡袋,睡垫。 通过这种方式,我想知道我实际上需要与users建立has_and_belongs_to_many关系,因为帐篷可能属于许多用户,而用户可能有很多帐篷。 对不起,如果这听起来像是一个漫步…我已经坐在这里4个小时,有很多纸和涂鸦,这没有更清楚……

如何在Ruby on Rails中有效地使用多个数据库表

我给自己一个小项目来帮助我改进我的ruby on rails编程。 到目前为止,我已完成完整的用户注册和身份validation密码重置,记住我的function和通知电子邮件。 我完全理解发生了什么。 所以我现在已经转移到用户帐户区域,并希望对用户编辑其个人资料的页面进行编码。 我的注册表只询问用户名,电子邮件和密码,因为我想快速注册。 对于用户将编辑其个人资料信息的页面,它将询问他们以下内容: 名字姓氏出生日期的位置它将有关于我个人统计数据的个人资料以及他们的照片 他们应该能够动态更新或更改此信息。 在他们的实际个人资料页面上,它会提取他们的个人资料内容。 我想知道保持井井有条,最好是为这个例如配置文件创建一个单独的表吗? 或者将这些信息存储在数据库的users表中是否明智,例如名字姓? 我正试图找出一种干净的方法来做到这一点,因为稍后我需要添加更多页面,如设置页面等。 这是我第一次使用多个表,我知道如何做但不太确定。 任何建议,如简要说明如何实现这一点,将不胜感激。 问候

建模许多Rails关联

我试图围绕如何为具有许多has_one关联(20+)的父模型建模我的数据库。 我有一个名为House的模型,它是所有其他模型的父模型: class House < ActiveRecord::Base has_one :kitchen has_one :basement has_one :garage has_one :common_room #… Many other child models end 所有子模型都包含特定于其自己类的唯一属性。 我考虑过STI,但实际上并没有任何可以在模型中使用的共享function或输入。 我还想过制作一个“超级模型”,但这并不是真正遵循Rails最佳实践,而且它将包含200多个列。 是否有其他设计模式或结构可用于高效建模,以便减少数据库调用?

需要设计艺术家推荐的建议

我有以下场景。我需要向用户推荐艺术家。 该如何建模? 我正在寻找有关这方面的建议。 我刚在想。 基于以下标准: 当用户收听歌曲时,歌曲类型会以+1记录 当用户“喜欢”一首歌时,歌曲类型会以+2记录在某处 通过这种方式,我可以根据具有最高分的类型列出所有艺术家。 即使如此,我是否应该有一个名为“推荐”的新模型并将其嵌入到用户中? 我愿意接受各种建议。

测验应用程序的Rails关联和数据库设计

我正在构建此测验应用程序。 我希望它有点复杂。 我想出了这个数据库模式。 但我真的很困惑..对于我需要什么样的关联和东西感到困惑。 嗯..有一点需要注意的是,当创建测试时,没有关于将接受测试的候选人数量的信息。 因此,我将test_questions和candidate_answers创建为单独的表。 请帮助我协会。

合并Rails数据库

我有两个结构相同的数据库。 这些表有一个整数作为Rails中使用的主键。 如果我有患者表,我将有一名患者在一个数据库中使用主键123,而另一名患者在另一个数据库中使用相同的主键。 您建议合并两个数据库中的数据?