Subject:Целостность данных - проектирование БД, Nerian, 25-Ноя-04, 00:09 [смотреть все]Здравствуйте. Чтот я до сих пор не могу понять одну важную вещь в реляционых моделях БД. Допустим есть две таблицы: customs: id - autoincrement int not null primary key name - varchar(25) state - int states: id - autoincrement int not null primary key name - varchar(25) customs - хранит название заказа, и ссылку на состояние. Понятно чтобы получить какой заказ на каком состояние очень просто: select customs.name as cname,states.name as sname where customs.state = states.id; Но вот как быть если состояние было удалено? То тогда в нашем примере мы потеряем заказы в этом состояние. Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не было потери данных. И ещё вопрос: например как в форумах с регистрацией сделано что после того как пользователь удалил свой аккаунт, письма не удаляються, а остаються с его ником? вот мнеб чтот на подобии надо. Плиз всем помогите. |
- Subject:Целостность данных - проектирование БД, gr, 04:50 , 25-Ноя-04 (1)
>Здравствуйте. Чтот я до сих пор не могу понять одну важную вещь >в реляционых моделях БД. Допустим есть две таблицы: >customs: >id - autoincrement int not null primary key >name - varchar(25) >state - int >states: >id - autoincrement int not null primary key >name - varchar(25) > >customs - хранит название заказа, и ссылку на состояние. >Понятно чтобы получить какой заказ на каком состояние очень просто: >select customs.name as cname,states.name as sname where customs.state = states.id; >Но вот как быть если состояние было удалено? >То тогда в нашем примере мы потеряем заказы в этом состояние. >Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не >было потери данных. >И ещё вопрос: например как в форумах с регистрацией сделано что после >того как пользователь удалил свой аккаунт, письма не удаляються, а остаються >с его ником? вот мнеб чтот на подобии надо. Плиз всем >помогите. тебе необходимо понимание - что такое блокировка на чтение и на запись, и, главное, о проектировании БД (достаточно чего-то вводного) почитай книжки - кратко ответить нельзя на твой вопрос
- Subject:Целостность данных - проектирование БД, Nerian, 11:25 , 25-Ноя-04 (2)
>тебе необходимо понимание - что такое блокировка на чтение и на >запись, >и, главное, о проектировании БД (достаточно чего-то вводного) >почитай книжки - кратко ответить нельзя на твой вопрос Я знаю что такое блокировка и книги читал. Вопрос при чём тут блокировка? Состояния реально могут изменять/добавляться и удаляться
- Subject:Целостность данных - проектирование БД, rnl, 11:46 , 25-Ноя-04 (3)
>Понятно чтобы получить какой заказ на каком состояние очень просто: >select customs.name as cname,states.name as sname where customs.state = states.id; >Но вот как быть если состояние было удалено? >То тогда в нашем примере мы потеряем заказы в этом состояние. >Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не >было потери данных. если смысл в том, чтобы в результате такого запроса по-любому получить список заказов, то должен помочь select не с обычным join'ом, а с LEFT JOIN. - Subject:Целостность данных - проектирование БД, DiM_root, 15:04 , 25-Ноя-04 (4)
>Здравствуйте. Чтот я до сих пор не могу понять одну важную вещь >в реляционых моделях БД. Допустим есть две таблицы: >customs: >id - autoincrement int not null primary key >name - varchar(25) >state - int >states: >id - autoincrement int not null primary key >name - varchar(25) > >customs - хранит название заказа, и ссылку на состояние. >Понятно чтобы получить какой заказ на каком состояние очень просто: >select customs.name as cname,states.name as sname where customs.state = states.id; >Но вот как быть если состояние было удалено? >То тогда в нашем примере мы потеряем заказы в этом состояние. >Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не >было потери данных. >И ещё вопрос: например как в форумах с регистрацией сделано что после >того как пользователь удалил свой аккаунт, письма не удаляються, а остаються >с его ником? вот мнеб чтот на подобии надо. Плиз всем >помогите. если я правильно понял вопрос, то тебе надо почитать про JOIN, LEFT JOIN, RIGHT JOIN ... Хорошая дока есть на сайте www.mysql.com
|