Я не специалист по базам данных и новичок в Rails, так что здесь идет кое-что, что меня немного смущает ...
Предположим, у меня есть три класса в качестве образца (обратите внимание, что не было предпринято никаких усилий для решения любой возможной проблемы зарезервированных слов Rails в образце).
class File < ActiveRecord::Base
has_many :records, :dependent => :destroy
accepts_nested_attributes_for :records, :allow_destroy => true
end
class Record < ActiveRecord::Base
belongs_to :file
has_many :users, :dependent => :destroy
accepts_nested_attributes_for :users, :allow_destroy => true
end
class User < ActiveRecord::Base
belongs_to :record
end
После ввода записей содержимое базы данных будет отображаться как таковое. Моя проблема заключается в том, что если для одной и той же записи существует много файлов, в ней будут повторяться имена записей. Это также будет верно, если в таблице Users будет несколько записей для одного и того же пользователя.
Мне было интересно, есть ли лучший способ, чтобы один или несколько файлов указывали на одну запись, а одна или несколько записей указывали бы на одного пользователя. Кстати, имена файлов являются уникальными.
Таблица файлов:
id name
1 name1
2 name2
3 name3
4 name4
Таблица рекордов:
id file_id record_name record_type
1 1 ForDaisy1 ...
2 2 ForDonald1 ...
3 3 ForDonald2 ...
4 4 ForDaisy1 ...
Таблица пользователей:
id record_id username
1 1 Daisy
2 2 Donald
3 3 Donald
4 4 Daisy
Есть ли способ оптимизировать базу данных, чтобы предотвратить дублирование записей, или это должно действительно правильное и правильное поведение. Я распределил базу данных по разным таблицам, чтобы в будущем можно было легко добавлять новые столбцы.