Uppgift 01
Så här se min databas ut för projekt01
ER-diagram

databasmodell

Den här databasen är gjord för ett inloggningssystem och en enkel bankapplikation. Den är uppbyggd på ett tydligt och säkert sätt. Tabellen User innehåller alla användare. Varje användare har ett unikt userid, ett username, ett hashat lösenord och en role. Användarnamnet är unikt så att ingen annan kan ha samma namn. Lösenord sparas som hash för bättre säkerhet.
User är kopplad till tabellen Useraccount. Det innebär att en användare kan ha flera bankkonton, men att varje konto endast tillhör en användare. Tabellen Useraccount innehåller ett accountid som primärnyckel, ett userid som främmande nyckel som pekar på User, samt ett accountname som beskriver kontot, till exempel lönekonto eller sparkonto. Genom att separera användare och konton blir databasen mer flexibel och bättre anpassad för verkliga banksystem.
Alla transaktioner sparas i tabellen Trasaktioner. Varje transaktion har ett eget id, ett accountid, ett belopp, en typ (insättning eller uttag) och ett datum. Ett konto kan ha många transaktioner.
Uppgift02
Databasdump:
-- phpMyAdmin SQL Dump
-- version 5.1.2
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Jan 11, 2026 at 06:10 PM
-- Server version: 5.7.24
-- PHP Version: 8.3.1
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `m06`
--
-- --------------------------------------------------------
--
-- Table structure for table `trasaktioner`
--
CREATE TABLE `trasaktioner` (
`id` int(11) NOT NULL,
`username` varchar(50) NOT NULL,
`amount` decimal(10,2) NOT NULL,
`type` enum('credit','debit') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `trasaktioner`
--
INSERT INTO `trasaktioner` (`id`, `username`, `amount`, `type`) VALUES
(1, 'ss', '32.00', 'credit'),
(2, 'ss', '5.00', 'credit'),
(3, 'ss', '3.00', 'debit'),
(4, 'ss', '3.00', 'credit'),
(5, 'ss', '3.00', 'credit'),
(6, 'ss', '1000.00', 'credit'),
(7, 'ss', '32.00', 'debit'),
(8, 'admin', '1000.00', 'credit'),
(9, 'users', '1000.00', 'credit'),
(10, 'tmm', '100.00', 'credit'),
(11, 'rr', '1000.00', 'credit'),
(12, 'lalo', '1000.00', 'credit'),
(13, 'ShadowFox', '100.00', 'credit'),
(14, 'ShadowFox', '99.00', 'debit'),
(15, 'ShadowFox', '11.00', 'credit');
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`role` varchar(10) NOT NULL DEFAULT 'user',
`email` varchar(100) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `username`, `password`, `role`, `email`, `created_at`) VALUES
(1, 'ss', '$2y$10$aRNiBu0EFuHXe4C3vO7yEua1eFuRNe5dJpBSU5SfvetfTX3hVstuK', 'user', NULL, '2025-11-17 13:45:27'),
(3, 'hej', '$2y$10$H/ek4C3DW/ShjSVIpIr8uujzBdXOMCPE985wkvr3x3N.7W8tvC/2W', 'user', NULL, '2025-11-17 13:50:15'),
(5, 'tmm', '$2y$10$TBxDp.jVVMFUZKCyE2YklOIC9Qjj8J/zBP0htkA8MKb8trHTmngtW', 'user', NULL, '2025-11-17 14:17:45'),
(6, 'qq', '$2y$10$r0zQqY2jMvPrDwevfzmn4uqBTInQnPd99I/WdxvwwtOlDWvg5gmVa', 'user', NULL, '2025-11-17 14:18:00'),
(7, 'ShadowFox', '$2y$10$BUDl4TKqTsoCTA2k0Tm7e.FJdi7P3lj4Cg64IWdSHLCK1kmOKARVq', 'user', 'shadowfox@mail.com', '2025-12-15 11:30:12'),
(8, 'PixelNinja', '$2y$10$Q3KmfZMK9fLf61XNSfh48.hq0EBXKDGPCUylCQA8uH32pwM3ZJe.O', 'user', 'pixelninja@mail.com', '2025-12-15 11:30:12'),
(9, 'CodeWizard', '$2y$10$ey9y7W9TFEaUoV70/irpBum1zHBHiDAii631CS8D7WCevjSOuzXFG', 'user', 'codewizard@mail.com', '2025-12-15 11:30:12'),
(10, 'NightRider', '$2y$10$lTADxTWd48TtgX3mWr.adO9CnZRPfs98XTH4oTXgtjkKdmnZiPVrq', 'user', 'nightrider@mail.com', '2025-12-15 11:30:12'),
(11, 'BlueComet', '$2y$10$yntdZ7TnUqU0w9jMOUSi5eoiVJYOFZ16ok5T8ahPiHOK9Y/S7A8ka', 'user', 'bluecomet@mail.com', '2025-12-15 11:30:12'),
(12, 'IronWolf', '$2y$10$CWxF.zCOx/cn72PHtfQ9VO2XTRRgUjuhoDXS0gNVwOyZ1XD08PP/S', 'user', 'ironwolf@mail.com', '2025-12-15 11:30:13'),
(13, 'CyberViking', '$2y$10$FlxDzcBCLk/tptcM6LftW.JwOLliCwnc3usQt7hV1A2yuIHDTfMKG', 'user', 'cyberviking@mail.com', '2025-12-15 11:30:13'),
(14, 'NeonTiger', '$2y$10$HDQ3nBCeZWoi5d4RZJalM.o3eWVVxrwGRp1oDu5ZpaeSu5kuaebrq', 'user', 'neontiger@mail.com', '2025-12-15 11:30:13'),
(15, 'StormBreaker', '$2y$10$D6AaSk1OEKE.hCkJPgC2/e.0mJe6lwAzpzojoJ4GW/Efq8cTNGy6K', 'user', 'stormbreaker@mail.com', '2025-12-15 11:30:13'),
(16, 'DarkOrbit', '$2y$10$QmKaSqTZcfNc64JnukZlZuhNPSFsyFSN2T7xf83VxkJoCaOUOI48G', 'user', 'darkorbit@mail.com', '2025-12-15 11:30:13'),
(17, 'FireDrake', '$2y$10$gArivfr/UtkcQBSzg93tvO60qa1HlrQocQZ6tObjw89v5jKzntZDi', 'user', 'firedrake@mail.com', '2025-12-15 11:30:13'),
(18, 'EchoBlade', '$2y$10$XH33DNExZBcqrqf8sDE2L.Z3KqxgHnrKGLgqw3yE0uWP4rcVhjcui', 'user', 'echoblade@mail.com', '2025-12-15 11:30:14'),
(19, 'FrostByte', '$2y$10$Iw0kB1YKicrSSpVfgA0h2OxBQZe77fmnmbEpVm0pUov8f.uUDzixG', 'user', 'frostbyte@mail.com', '2025-12-15 11:30:14'),
(20, 'LunaSpark', '$2y$10$UVAp9AhdRjzLQBGWQSB7DOCH4NzD/mx7n2bgs91QWvJB/pbIUP7oa', 'user', 'lunaspark@mail.com', '2025-12-15 11:30:14'),
(21, 'NovaPulse', '$2y$10$705eQ0xaACAD4Hy6y6x/kOTWF5662rFX5XXOhll9M4unl68S46Ove', 'user', 'novapulse@mail.com', '2025-12-15 11:30:14'),
(22, 'GhostCoder', '$2y$10$7P9BTvayN/t8B9KEJzqWE.sS64Y0pPMnDLuxN8iMsuw4xjyo.6v8K', 'user', 'ghostcoder@mail.com', '2025-12-15 11:30:14'),
(23, 'ThunderIQ', '$2y$10$/8MF/yGbB.Q.VYSqr.OCou1sw5jX50qYEq.jTNlVrJD2R5XulKCAC', 'user', 'thunderiq@mail.com', '2025-12-15 11:30:15'),
(24, 'VoidRunner', '$2y$10$1573lgCAMpfzhlZk2gI5Du6Vd/N2zU16VsoDcSoh/gj1Yxotz9s1G', 'user', 'voidrunner@mail.com', '2025-12-15 11:30:15'),
(25, 'SolarFlare', '$2y$10$b7YgqIgb8f4WfEP606Kucez.jts00b5CcYhkhx/lK5EEtEUTj1U/u', 'user', 'solarflare@mail.com', '2025-12-15 11:30:15'),
(26, 'CrimsonByte', '$2y$10$ltQYJOGDYxj2yJlQhkMloed6EFWkSz.3OByOKJ4GQx4sd/hfKK1H2', 'user', 'crimsonbyte@mail.com', '2025-12-15 11:30:15'),
(27, 'lalo', '$2y$10$kVFUD..v9kQSiZEr5iVqsOecvhAuF0tvy9c.ckP6w/65y6qGaDoRS', 'user', NULL, '2025-12-15 11:32:38');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `trasaktioner`
--
ALTER TABLE `trasaktioner`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `username` (`username`),
ADD UNIQUE KEY `email` (`email`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `trasaktioner`
--
ALTER TABLE `trasaktioner`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=28;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Jag har lagt ca 30 användra och sida är redo att användas.
Till slut blev jag klar med bankprojektet, men det krävde mer arbete än jag först trodde. Jag försökte bygga ett system som skulle göra databashanteringen enklare genom en gemensam basklass som andra klasser kunde ärva från. I början fungerade det bra och gjorde det lätt att hämta och använda data.
Efterhand uppstod dock flera problem, till exempel när nya användare skulle skapas, eller när data behövde hämtas på olika sätt. Vissa lösningar fungerade, men gjorde koden mer komplicerad än planerat. Det som var svårast var att hantera relationer mellan tabeller, som att enkelt kunna hämta en användares konton.
Trots detta ser jag fortfarande idén som bra i grunden. Även om resultatet inte blev perfekt i detta projekt, tror jag att samma princip skulle fungera bättre i ett större projekt med mer tid. I övrigt gick uppgiften bra, och eftersom strukturen redan fanns på plats krävdes bara små ändringar för att anpassa koden.

Lämna ett svar