Здравствуйте. Чтот я до сих пор не могу понять одну важную вещь в реляционых моделях БД. Допустим есть две таблицы:
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;
Но вот как быть если состояние было удалено?
То тогда в нашем примере мы потеряем заказы в этом состояние.
Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не было потери данных.
И ещё вопрос: например как в форумах с регистрацией сделано что после того как пользователь удалил свой аккаунт, письма не удаляються, а остаються с его ником? вот мнеб чтот на подобии надо. Плиз всем помогите.
>Здравствуйте. Чтот я до сих пор не могу понять одну важную вещь
>в реляционых моделях БД. Допустим есть две таблицы:
>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;
>Но вот как быть если состояние было удалено?
>То тогда в нашем примере мы потеряем заказы в этом состояние.
>Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не
>было потери данных.
>И ещё вопрос: например как в форумах с регистрацией сделано что после
>того как пользователь удалил свой аккаунт, письма не удаляються, а остаються
>с его ником? вот мнеб чтот на подобии надо. Плиз всем
>помогите.
тебе необходимо понимание - что такое блокировка на чтение и на запись,
и, главное, о проектировании БД (достаточно чего-то вводного)
почитай книжки - кратко ответить нельзя на твой вопрос
>тебе необходимо понимание - что такое блокировка на чтение и на
>запись,
>и, главное, о проектировании БД (достаточно чего-то вводного)
>почитай книжки - кратко ответить нельзя на твой вопросЯ знаю что такое блокировка и книги читал. Вопрос при чём тут блокировка? Состояния реально могут изменять/добавляться и удаляться
>Понятно чтобы получить какой заказ на каком состояние очень просто:
>select customs.name as cname,states.name as sname where customs.state = states.id;
>Но вот как быть если состояние было удалено?
>То тогда в нашем примере мы потеряем заказы в этом состояние.
>Как бы это обойти? Чтобы осталась возможность добовлять/удалять новыве состояния, и не
>было потери данных.если смысл в том, чтобы в результате такого запроса по-любому получить список заказов, то должен помочь select не с обычным join'ом, а с LEFT JOIN.
>Здравствуйте. Чтот я до сих пор не могу понять одну важную вещь
>в реляционых моделях БД. Допустим есть две таблицы:
>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