• 1
  • 2
2023-04-05, 21:46
  #13
Medlem
Ett tips frn egen erfarenhet - brja inte nummer med nollor. Funkar visserligen utmrkt i databasen, men om du exporterar till excel s frsvinner inledande nollor.
Citera
2023-04-05, 21:54
  #14
Medlem
Citat:
Ursprungligen postat av mikaels
Grundlggande i databasdesign r att nyckeln, dvs identiteten, inte br vara betydelsebrande.
Tyvrr blir det sllan s, men d blir det som med personnumren, som tar slut nr fr mnga fr samma fdelsedatum.
Nyckeln ska bara vara en identifierare, inget annat.
Tycker id br vara en GUID, och frg, storlek, leverantr etc br vara attribut till objektet.
Att bygga in betydelse i identifieraren gr dig lst, frr eller senare fr du en artikel som inte passar mallen, och d smller ditt system.

+1, alla gr samma misstag frmodligen fr att folk inte tror att databaser existerar och man r kvar i fysiska kartotek.
Citera
2023-04-05, 23:09
  #15
Medlem
MagisterBisters avatar
Citat:
Ursprungligen postat av Youresocool
Hej.

Ska man kalla en produkt fr "Artikel Nummer 0001" vad det den anses som, och sedan fortstta med "Aritklelnummer 0002" o.s.v. o. s. v. eller hur gr firmor liksom?
Det beror p vad du ska anvnda artikelnamnet till. Ska du ha det fr att identifiera artiklarna i en databas anvnder du bara lpnummer. Brja p 1 och sedan fortstt. Det ska inte lggas in ngon betydelse i numret. Beskrivningen av artikeln finns sedan i vriga flt i databasposten.

Om du tnker lgga upp ngon slags kartotek och arken r fr sm fr att all data ska f plats kan du hitta p ngot stt att koda egenskaper till siffror. S att 1 betyder bord, 2 betyder ftlj, 01 betyder rd, etc. D vet du att 217 betyder ftlj, rd, skinn.

Fast d kandi egentligen lika grna lta artikelnumret best av bokstver och lta artikeln heta ftlj, rd, skinn i stllet.

Frsker man infra nn slags kodning i artikelnumret blir det bara att systemet kraschar i framtiden d det tillkommer nya kategorier som inte passar eller fler kategorier n man har plats fr.

Jmfr med vrt personnummer. Frn brjan var det tnkt att det skulle best av 10 siffror och visa inte bara vilket datum man var fdd utan ocks var man var fdd, vilket kn man var av och vilket barn i ordningen som ftts den dagen.

Men d tnkte man inte p att folk skulle bli ldre n 100 r, eller att det i framtiden skulle finnas mnniskor som inte ville visa vilket kn de var av, eller att det i framtiden skulle komma tusen invandrare som alla pstod att de var fdda frsta januari r 2000.
Citera
2023-04-06, 02:55
  #16
Moderator
Diablo1118s avatar
Privatekonomi --> Databaser
/Moderator
Citera
2023-04-07, 13:16
  #17
Moderator
Pontiac-Garages avatar
Citat:
Ursprungligen postat av Youresocool
Hej.

Ska man kalla en produkt fr "Artikel Nummer 0001" vad det den anses som, och sedan fortstta med "Aritklelnummer 0002" o.s.v. o. s. v. eller hur gr firmor liksom?

"Artikel Nummer" tillfr ju inte direkt mkt till variabeln s kanske lttare att ha en numerisk kolumn med namnet Artikelnummer dr siffrorna lggs in.

Lmpligen inte som PK i tabellen.
Citera
2023-04-07, 22:23
  #18
Medlem
Youresocools avatar
Jag tackar fr svaren.
Citera
2023-04-07, 23:14
  #19
Medlem
Citat:
Ursprungligen postat av Youresocool
Jag tackar fr svaren.

FMV (Frsvarets Matriel Verk) Har ett bra system.
Du kan nog se delar av det p deras logistiksida, dr sorterar man artiklar riktigt bra.

Kanske inte "Copy paste" p det, men systematiken r grym......
Citera
2023-04-07, 23:28
  #20
Medlem
Tratten52s avatar
Man skapar frst en grundstruktur bestende av produktgrupper och artikelgrupper. D kan man enklare skapa artikelnummer som har en logisk frklaring, speciellt om man har 100 tusentals olika produkter
Citera
2023-04-07, 23:45
  #21
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av mikaels
Grundlggande i databasdesign r att nyckeln, dvs identiteten, inte br vara betydelsebrande.
Tyvrr blir det sllan s, men d blir det som med personnumren, som tar slut nr fr mnga fr samma fdelsedatum.
Nyckeln ska bara vara en identifierare, inget annat.
Tycker id br vara en GUID, och frg, storlek, leverantr etc br vara attribut till objektet.
Att bygga in betydelse i identifieraren gr dig lst, frr eller senare fr du en artikel som inte passar mallen, och d smller ditt system.
Hear hear. Allt annat knns vldigt gammaldags.
Citera
2023-10-11, 18:20
  #22
Medlem
Jag hller med om att ID br vara ett UUID. Sedan kan du ha en tabell fr produktkategorier som du kopplar till en kolumn kallad t.ex. "product_category". Och slutligen en tredje kolumn med produktnummer.

Jag skrev ihop ett exempel (MariaDB) som finns hr:
https://dbfiddle.uk/hAMbFsi-

Sen kan man vl bygga p det med subkategorier om man behver det.
En tredje tabell allts, t.ex. "product_subcategories" som har ett ID, en parent (kopplad till product_category(id)) och ett namn. Sedan fr varje produkt ha en kategori och en subkategori. Det r alltid bra att normalisera databasen. Kategorier, subkategorier, frger, storlekar, och annat som kan kopplas till flera produkter. Finns vl ondligt med normaliseringsgrader, 2NF, 3NF, 4NF, 5NF, osv... eller vad de nu heter.

Kod:
product_categories
|-- id
|-- name

product_subcategories
|-- id
|-- parent (product_categories(id))
|-- name

colors
|--id
|--name

sizes
|--id
|--name

products
|--id
|--category (product_categories(id))
|--subcategory (product_subcategories(id))
|--color (colors(id))
|--size (sizes(id))
|--name
|--product_number
__________________
Senast redigerad av Ehandel 2023-10-11 kl. 18:51.
Citera
2023-10-14, 16:39
  #23
Medlem
Kod:
CREATE TABLE products
	(
		product_id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
		parent_product_id int NULL FOREIGN KEY REFERENCES products(product_id),
		is_item bit NOT NULL DEFAULT 0,
		name varchar(255) NOT NULL
	)
GO
CREATE OR ALTER PROCEDURE add_product @name varchar(255), @parent_product_id int = NULL, @is_item bit = 1, @product_id int OUTPUT
AS
BEGIN
SET NOCOUNT ON;

	INSERT INTO products(parent_product_id, is_item, name) VALUES(@parent_product_id, @is_item, @name);
	SET @product_id = SCOPE_IDENTITY();
END
GO
DECLARE @product int = NULL, @category int = NULL, @subcategory int = NULL;
EXEC add_product 'Bikes', NULL, 0, @category OUTPUT;
EXEC add_product 'City-Bikes', @category, 0, @subcategory OUTPUT;
EXEC add_product 'Scott YZ1', @subcategory, 1, @product OUTPUT;
EXEC add_product 'Scott YZ2', @subcategory, 1, @product OUTPUT;
EXEC add_product 'Scott YZ3', @subcategory, 1, @product OUTPUT;
EXEC add_product 'Scott YZ4', @subcategory, 1, @product OUTPUT;
WITH a AS (
SELECT product_id, parent_product_id, is_item, cast(name as varchar(max)) as name FROM products WHERE parent_product_id IS NULL
UNION ALL
SELECT p.product_id, p.parent_product_id, p.is_item, a.name + '/' + p.name FROM products p INNER JOIN a ON a.product_id = p.parent_product_id
)
SELECT * FROM a WHERE is_item = 1
Beroende p antal i ditt register kan du bygga en hiearkisk tabell istllet, d kan du sjlv vlja antalet niver p varje kategori... Och i det fall ngon sger nt s kan jag bekrfta att det hr fungerar blixtsnabbt med rtt indexstrategi ven p miljontals artiklar.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in