Existem problemas com esta solução 'Soft Delete' usando tabelas EAV?
Eu li algumas informações sobre o lado feio de apenas definir umdeleted_at
em suas tabelas para indicar que uma linha foi excluíd
Nomeadament
http: //richarddingwall.name/2009/11/20/the-trouble-with-soft-delete
Há algum problema em potencial ao obter uma linha de uma tabela que você deseja excluir e transformá-la em algumas tabelas EA
Por exemplo
Vamos dizer que tenho duas mesasdeleted
edeleted_row
espectivamente descritos a segui
mysql> describe deleted;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| tablename | varchar(255) | YES | | NULL | |
| deleted_at | timestamp | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
mysql> describe deleted_rows;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| entity | int(11) | YES | MUL | NULL | |
| name | varchar(255) | YES | | NULL | |
| value | blob | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+
gora, quando você deseja excluir uma linha de qualquer tabela, você deve excluí-la da tabela e inseri-la nessas tabelas como ta
deleted
+----+-----------+---------------------+
| id | tablename | deleted_at |
+----+-----------+---------------------+
| 1 | products | 2011-03-23 00:00:00 |
+----+-----------+---------------------+
deleted_row
+----+--------+-------------+-------------------------------+
| id | entity | name | value |
+----+--------+-------------+-------------------------------+
| 1 | 1 | Title | A Great Product |
| 2 | 1 | Price | 55.00 |
| 3 | 1 | Description | You guessed it... it's great. |
+----+--------+-------------+-------------------------------+
Algumas coisas que eu vejo de imediato.
ocê precisará usar a lógica do aplicativo para fazer o pivô (Ruby, PHP, Python, etA mesa pode crescer bastante porque estou usandoblob
para lidar com o tamanho desconhecido do valor da linhaVocê vê outros problemas gritantes com esse tipo de exclusão suave?