Pregunta

Actualmente estoy desarrollando una pequeña relación con el cliente y el sistema de gestión de facturas para mi cliente. Y me he encontrado con algunos pequeños problemas que me gustaría hacer hablar.

¿Cuál es la mejor práctica en torno pedidos, clientes y productos. En caso de que mi cliente pueda eliminar pedidos, clientes y productos?

En la actualidad he diseñado mi base de datos en torno al principio de las relaciones entre el orden, cliente y producto como este:

cliente
ID Fotos Título
...

Producto
ID Fotos Título
Precio
...

Solicitar
ID
CustomerID
OrderDate
...

línea de pedido
ID
IDPedido
ProductID

Al igual que esto puede conectar todas las diferentes tablas. Pero lo que si mi cliente borrar un producto, lo que sucede cuando más tarde abrir una orden que creó hace meses que tenía ese elemento en ella. Sería ido, ya que se ha eliminado. Lo mismo va para el cliente.

¿Debo desactivar los productos y los clientes cuando se hace clic en el botón de borrar o lo que es la mejor práctica?

Si digamos que producto de una diable cada vez que mi cliente decide eliminarlo, lo que sucede a continuación, si más adelante intenta añadir un nuevo producto con el mismo ID de producto como discapacitados, ¿debo volver a activar ese elemento?

Por favor comparta su sabiduría: D

¿Fue útil?

Solución

"Si yo digamos que producto de una diable cada vez que mi cliente decide eliminarlo, lo que sucede a continuación, si más adelante intenta añadir un nuevo producto con el mismo ID de producto como discapacitados, debería simplemente habilitar de nuevo ese tema?"

depende totalmente de su escenario de negocios - lo que es único en la forma en que los clientes mantienen en la actualidad? (Dicen manualmente?) ¿Cómo manejan cuando un producto antiguo que fue descontinuado a principios de repente vuelve a aparecer? (¿Es que lo tratan como un nuevo producto o empezar a referirse al producto de edad?) Creo que no hay respuestas correctas o incorrectas a estas preguntas, que depende de la funcionalidad - que siempre es recomendable para entender los procesos existentes (menos el software ) ya seguida por los clientes y luego asignarlos a la funcionalidad del software.

Para por ejemplo. siempre se puede añadir un 'producto A con este código ya existe - hacer que desea utilizar que en lugar de crear una nueva?' tipo de mensaje. Además, los identificadores de productos que se utilizan en las tablas como claves externas, y los que se utilizan para mostrar al cliente, mejor será diferente - no quieres confundirlas.

Otros consejos

¿Por qué quieres ser capaz de órdenes de borrado? Me gustaría pensar que un sistema de ese tipo bloquear órdenes para que usted sabe que tiene una historia buena. Lo mismo va para los clientes, por eso eliminarlos? Tal vez una forma de "archivo" ellos, tener que configurar alguna bandera, de esa manera que no aparecen en las listas de clientes o algo.

En cuanto a la desactivación y luego entrar en un nuevo elemento con el mismo ID de producto - No estoy seguro de por qué te gustaría hacer eso, cada ID de producto es único por una razón, incluso si deja de un producto, se debe mantener es el ID del producto por lo que tiene un registro. Pero si usted debe, entonces se puede poner una restricción en las reglas de negocio, algo en el sentido de "Si no hay un producto que es activo con esta identificación del producto y luego lo permiten. Si tenemos un producto que es activo y tiene la mismo ID de producto, a continuación, emite un error ". Por lo tanto, sólo se permiten para un producto activo con ese identificador de producto - pero, honestamente, creo que esto sería confuso, y en la parte final usted querrá utilizar un identificador único que no cambia para cada producto de enlace entre las tablas <. / p>

En lugar de "borrar" me gustaría añadir una columna booleana para IsActive. De esa manera usted no soltará datos históricos. Por ejemplo, si son capaces de eliminar un cliente, entonces no será capaz de mirar a la historia con respecto a ese cliente y puede hacer que mirar los datos estadísticos difícil o imposible. Para la mesa lo tanto no podemos tener una columna que representa algo así como "actual", "cancelado", "lleno" para lograr la misma cosa. Esa columna debe ser un código para una búsqueda / tabla de códigos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top