我有两个型号:Show和Venue.Show有一个场地,而每个场地都属于show.这两个条件在带有has_one&belongs_tostatements的模型文件中定义.但是,我无法通过这样做进入会场show.venue.考虑以下代码,其中s是一个Show实例:
logger.info("*********************")
logger.info("#{s.inspect}")
logger.info("#{Venue.find(s.venue_id)}") # Works
logger.info("#{s.venue}") # Causes a MySQL Error
logger.info("*********************")
Run Code Online (Sandbox Code Playgroud)
我觉得导致MySQL错误的行应该有效.这是错误:
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95) LIMIT 1)
Run Code Online (Sandbox Code Playgroud)
我不知道它为什么试图访问venues.show_id.有任何想法吗?
我正在建立一个销售小部件的网站.我有一个小部件表,每个小部件都有一些属性(小部件名称,样式等).我还有一个供用户使用的表格.窗口小部件具有唯一ID,用户还具有与之关联的唯一ID.
我的用户希望开始向其帐户"添加"小部件.每个小部件都可以添加到无限量的用户中.所以我的问题是我应该创建一个表,让我们称之为User_Widget,它将UserID与WidgetID相关联?
我想到的另一种方法是在User表中使用逗号分隔值(WidgetID1xQuantity,WidgetID2xQuantity等).如果我标准化这种格式,我可以使用php来解析它并将它们内爆到一个数组中,然后可以交叉引用它来从Widget表中提取信息.
哪一个更快/更好的做法?如果我使用User_Widget方法,如果多个用户添加相同的小部件会发生什么?我只有两个条目吗?这不会增加额外开销吗?
小工具| 用户wid1 | user1 wid1 | 用户2
搜索这些(使用JOIN等)会比其他方法慢吗?
在此先感谢您的帮助.
丹尼尔.
如果我有这样的关系:1 - 0..1,它被认为是一对多?
我在mysql工作台中唯一的选择是:
1:1, 1:n, n:n...
Run Code Online (Sandbox Code Playgroud)
谢谢!
当在时间戳排序协议中回滚事务时,为什么要为其赋予新的时间戳?我们为什么不保留旧的时间戳记?
我正在尝试为客户设计DVD销售和DVD租赁的关系.虽然我不认为我的转换表是正确的.如果有人能让我知道我是否朝着正确的方向前进,那么设计会很棒.

sql sql-server visio entity-relationship relational-database
非常感谢有关规范化和优化此表'table1'的帮助.我目前可以执行以下查询:
SELECT user AS users
FROM table1
WHERE project='Project B'
AND doctype='DocType B'
Run Code Online (Sandbox Code Playgroud)
并得到我想要的东西,但我觉得它不是很有效率,并希望得到如何改进的帮助(有解释).
最终我试图实现以下目标:
1)将这1个表分成多个表以便于维护
2)给定'project'和'doctype',返回所有用户
表格1:
project doctype user
------- ------- ----
Project A DocType A User A
Project A DocType A User B
Project A DocType A User C
Project A DocType A User D
Project A DocType B User A
Project A DocType B User C
Project A DocType B User D
Project A DocType C User B
Project A DocType C User D
Project B …Run Code Online (Sandbox Code Playgroud) 我有两种类型的职位 - 公司职位和项目职位.以下是每个输入字段(在前端):
*company*
- company name
- company location
- company description
*project*
- project name
- project location
- project description
- project type
Run Code Online (Sandbox Code Playgroud)
什么是最好的数据库设计 - 一个表,保持所有字段分开 -
`job_post`
- company_name
- company_location
- company_description
- project_name
- project_description
- project_type
- project_location
Run Code Online (Sandbox Code Playgroud)
一张表结合了这些字段 -
`job_post`
- name
- location
- description
- project_type
- is_company (i.e., whether a company (True) or project (False)
Run Code Online (Sandbox Code Playgroud)
还是两张桌子,还是其他什么?为什么这种方式比其他方式更可取?
我有以下3个表格:
TestGroup
RecordNumber(pk)
Test
RecordNumber(pk)
TestGroupRecordNumber(fk)
结果
RecordNumber(pk)
TestRecordNumber(fk)
基本上,TestGroup是一组测试,每个测试都包含许多结果.我想选择结果少于X的所有TestGroup.什么查询将实现这一目标?
我有一个带有sender_id和receiver_id字段的事务表,另一个带有user_id first_name last_name等的用户表...
我想从事务中查询数据并从用户处加入详细信息,我需要为发送方和接收方带来first_name&last_name ...
SELECT t.* u.*
FROM transactions t, users u
WHERE t.sender_id = u.user_id OR t.receiver_id = u.user_id
Run Code Online (Sandbox Code Playgroud)
这当然不是解决方案,因为我无法知道结果集中的发送者/接收者,但它有助于说明问题
有任何想法吗?感谢Ajar
我目前正在上大学的课程项目,涉及一个测验,该测验将所有背景数据存储在数据库中。通过添加外键,我试图找到一种方法来合并两个表之间的外键数据。例如,users表存储用户数据及其用户ID。数据表将存储有关测验级别等信息以及该特定用户ID。插入数据时如何从两个表中自动更新该信息?
该方法似乎不起作用,下面是一些代码。
difficulty= (1,)
users_id = (1,)
#values of variables
def users_level(db,cursor,difficulty,users_id):
cursor.execute("insert into Data (Level,UsersID) VALUES (?,?)",(difficulty),(users_id))
db.commit()
Run Code Online (Sandbox Code Playgroud)
然后出现错误:
cursor.execute("insert into Data (Level,UsersID) VALUES (?,?)",(difficulty),(check_id))
TypeError: function takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
有解决这个问题的方法吗?或者可能是一种更容易/更有效的方法,可以使用外键从其他表中自动增加ID /数据。谢谢。
database ×5
mysql ×4
sql ×4
activerecord ×1
foreign-keys ×1
has-one ×1
php ×1
python ×1
ruby ×1
select ×1
sql-server ×1
sqlite ×1
typeerror ×1
visio ×1