相关疑难解决方法(0)

如何正确创建复合主键 - MYSQL

这是我正在使用的激烈设置的粗略过度简化.table_1并且table_2两者都有自动增加代理主键作为ID.info是一个包含有关table_1和的信息的表table_2.

table_1 (id, field)  
table_2 (id, field, field)
info ( ???, field)
Run Code Online (Sandbox Code Playgroud)

我试图决定,如果我应该做的主键info的ID从复合材料table_1table_2.如果我这样做,哪一个最有意义呢?
(在这个例子中,我将ID 11209与ID 437相结合)

INT(9)11209437 (我可以想象为什么这很糟糕)
VARCHAR (10) 11209-437
DECIMAL (10,4)11209.437

或者是其他东西?

将它用作MYSQL MYISAM数据库的主键可以吗?

mysql myisam primary-key composite-key composite-primary-key

166
推荐指数
5
解决办法
29万
查看次数

复合主键:是好还是坏

我一直在为在线商店系统设计数据库.通过阅读本网站上的一些帖子,我遇到的问题是,虽然我可以使用复合主键,但我会在下面解释一下,这是不是很糟糕的做法(根据我在这方面阅读的帖子)在stackoveflow上,很多人说这是一个不好的做法所以这就是我要问的原因.

我想在单独的表格中存储订单付款.原因在于,订单可以包含许多项目,这些项目以多对多关系的形式在单独的表格中处理.现在,如果我不使用复合主键作为我的付款表,我将失去我的独特性PaymentID:

[PaymentId] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[OrderId] INT NOT NULL PRIMARY KEY --Also a Foreign Key--
Run Code Online (Sandbox Code Playgroud)

现在,如果我只删除主键OrderId,我会在这里丢失我的一对一关系Many OrderIds can be associated to many PaymentIds,我不想要这个.

这就是为什么这里先前提出的问题已经(大多数时候)得出结论,复合键是一个坏主意.所以我想为自己澄清一下; 如果不好,那么最佳做法是什么?

sql database database-design relational-database

45
推荐指数
4
解决办法
4万
查看次数

Rails迁移创建表主键

我正在编写一个迁移脚本来创建一个表,其中包含一个名为的主键列,guid并且是一个VARCHAR(25).问题是我觉得我必须加倍努力才能一步到位才能实现目标.

如果我跑:

create_table(:global_feeds, :primary_key => 'guid') do |t|
  t.string :guid, :limit => 25
  t.text :title
  t.text :subtitle

  ...

  t.timestamps
end
Run Code Online (Sandbox Code Playgroud)

我得到一个表,其中一个名为guidno column 的主键被调用id(这就是我想要的).但是,问题是guid列是INT(11)打开自动增量的.所以我必须运行一个额外的命令:

change_column :global_feeds, :guid, :string, :limit => 25
Run Code Online (Sandbox Code Playgroud)

似乎有点费解,基本上必须运行两个SQL命令才能获得我认为应该可以在一个中执行的操作.

关于如何优化这个的任何建议?

mysql migration optimization ruby-on-rails-3

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

是否可以使用活动记录为表定义复合主键?

我在没有rails的ruby项目中使用ActiveRecord.我需要为表定义复合主键.通常,迁移会自动创建主键.是否可以使用活动记录为表定义自己的复合主键?

ruby rubygems rails-activerecord

10
推荐指数
1
解决办法
8496
查看次数

轨道上的ruby中的复合主键

我正在尝试使用http://compositekeys.rubyforge.org/,以便在我的activerecord模型中使用复合主键.

我已经添加gem 'composite_primary_keys', '=3.1.0'到我的Gemfile中了.现在我尝试按如下方式设置我的第一个模型类.

class StringProperty < ActiveRecord::Base
    self.primary_keys :entity_id, :property_id
    set_table_name "problem.string_property"
    attr_accessible :entity_id, :property_id, :value
end
Run Code Online (Sandbox Code Playgroud)

但我得到的只是: 在此输入图像描述

我究竟做错了什么?:(

ruby activerecord ruby-on-rails composite-primary-key

4
推荐指数
1
解决办法
4506
查看次数