Я начинаю создавать веб-приложение для сбора марок.Бэкэнд Python / фляга (я думаю :)) MySQL как DB.Я не очень разбираюсь в дизайне БД, поэтому, пожалуйста, имейте это в виду, если я сделаю какую-то действительно глупую ошибку в том виде, в котором я это придумал.Я думал разбить данные на 3 таблицы.
- таблица пользователей (все пользователи должны быть добавлены при регистрации в этой таблице)
- таблица марок (все марки должны находиться здесь иизменено только мной)
- таблица, находящаяся в собственности (таблица соединений с внешними ключами user_id и stamp_id)
Вопрос: если я добавлю user_id и stamp_id в качестве первичного ключа, будет только одинуникальная запись этого типа, например, user_1 имеет card_1.Но у user_1 может быть дубликат card_1, поэтому у меня должно быть 2 строки user_1 card_1 user_1 card_1 Другая проблема, которая возникает, заключается в том, что я хочу включить печать состояния, принадлежащего государству.Например, user_1 может иметь card_1 в отличном состоянии и card_1 в плохом состоянии.Насколько я понимаю, я могу ввести только одну уникальную пару user_1 card_1.Что я могу сделать, чтобы получить желаемый результат?Также, если есть лучший способ сделать это, пожалуйста, дайте мне знать.
Дополнительный вопрос.Я использовал mysql workbench, чтобы попытаться построить db, поэтому у меня есть вопрос о sql, который он генерирует.ОГРАНИЧЕНИЕ "fk_gibberish", это нормально или ... почему это так?
CREATE TABLE IF NOT EXISTS `stampcollect`.`users` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`user_username` VARCHAR(45) NULL ,
`user_password` VARCHAR(45) NULL ,
`user_email` VARCHAR(45) NULL ,
PRIMARY KEY (`user_id`) )
CREATE TABLE IF NOT EXISTS `stampcollect`.`stamps` (
`stamp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`stamp_name` VARCHAR(45) NULL ,
PRIMARY KEY (`stamp_id`) )
CREATE TABLE IF NOT EXISTS `stampcollect`.`owned` (
`user_id` INT NOT NULL ,
`stamp_id` INT NOT NULL ,
`stamp_status` BIT NULL ,
PRIMARY KEY (`user_id`, `stamp_id`) ,
INDEX `fk_{F5DBEF0D-24E0-4AFF-A5CB-2A6A0D448C96}` (`stamp_id` ASC) ,
CONSTRAINT `fk_{22B4468E-A5FB-4702-A8A9-576AA48A0543}`
FOREIGN KEY (`user_id` )
REFERENCES `stampcollect`.`users` (`user_id` ),
CONSTRAINT `fk_{F5DBEF0D-24E0-4AFF-A5CB-2A6A0D448C96}`
FOREIGN KEY (`stamp_id` )
REFERENCES `stampcollect`.`stamps` (`stamp_id` ));