Komponent stok takip sistemi için veritabanı tasarımı

Sana daha önce kullandığım bomist'ten örnek vereyim. Bizim kategoriye bunlar "Label" demiş. Ama aynı mantık.

1717079466360.png
 
Tasarım farklı, bu da CSS ile halledilecek bir iş.
Benim önceki sayfada paylaştığım saf HTML sadece bir kaç inline stil ekledim az daha düzgün görünsün diye :D
 
Bunlar da kodların şimdiki hali :)

Kod:
<?php include "db.php"; ?>

<!doctype html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="script/fontawesome/css/fontawesome.css" rel="stylesheet">
    <link href="script/fontawesome/css/brands.css" rel="stylesheet">
    <link href="script/fontawesome/css/solid.css" rel="stylesheet">
    <script src="script/jquery-3.7.1.min.js"></script>
    <title>PHP KAYITLAR</title>
</head>
<body>

<div style="padding-bottom: 20px; border: 1px solid red;padding: 15px">

<h1> KAYIT EKLEME EKRANI</h1>
    <form action="">

        <div style="padding-bottom: 20px">
            <label for="komponent">Komponent Adı:</label>
            <input type="text" id="komponent" name="komponent"><br><br>
            <label for="kategori">Kategori:</label>
            <select name="kategori" id="kategori">

                    <option value="">İşlem Seçiniz</option>
                    <option value="kategori">+ YENİ KATEGORİ EKLE</option>
                    <option value="yariiletken"> Yarı İletken</option>
                    <option value="kategori">- Transistör</option>
                    <option value="kategori">-- Mosfet</option>
                    <option value="kategori">-- BJT</option>
                    <option value="kondansator"> Kondansatör</option>
                    <option value="kategori">- Seramik</option>
                    <option value="elektrolit">- Elektrolit</option>
                    <option value="kondansator"> Direnç</option>
                    <option value="kondansator">- Karbon Film</option>
                    <option value="kondansator">- Alüminyum</option>

            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="lokasyon">Lokasyon:</label>
            <select name="lokasyon" id="lokasyon"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="yeni">+ YENİ LOKASYON EKLE</option>
                <option value="ev"> EV</option>
                <option value="dolap">- Dolap</option>
                <option value="ust">-- Üst sağ çekmece</option>
                <option value="orta">-- Orta Çekmece</option>
                <option value="isyeri"> İŞ YERİ</option>
                <option value="sag">- Sağ Çekmece</option>
                <option value="sol">- Sol Çekmece</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="uretici">Üretici:</label>
            <select name="uretici" id="uretici"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ ÜRETİCİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> SME</option>
                <option value="kategori"> TOSHIBA</option>
                <option value="kategori"> NEC</option>
                <option value="kategori"> TEXAS INSTRUMENTS</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="tedarikci">Tedarikçi:</label>
            <select name="tedarikci" id="tedarikci"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ TEDARİKÇİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> KARAKÖY</option>
                <option value="kategori"> ORASI</option>
                <option value="kategori"> BURASI</option>
            </select>
        </div>

        <div style="background-color: lightgray;padding: 10px;>
<h3>Paket Tipi</h3>
<input type="radio" id="DIP8" name="DIP8" value="DIP8">
<label for="DIP8">DIP8</label><br>
                <input type="radio" id="TO-3" name="TO-3" value="TO-3">
                <label for="TO-3">TO-3</label><br>
                <input type="radio" id="TO-220" name="TO-220" value="TO-220">
                <label for="TO-220">TO-220</label><br>
                <input type="radio" id="DIP16" name="DIP16" value="DIP16">
                <label for="DIP16">DIP16</label><br>
                <input type="radio" id="SOT-23" name="SOT-23" value="SOT-23">
                <label for="SOT-23">SOT-23</label>
        </div>
        <br><br>
        <div style="background-color: lightgray; display: inline-block; padding: 10px;">
        <label for="dokuman">Döküman:</label>

        <input type="file" id="dokuman" name="dokuman">
        </div>
        <br><br>
        <div style="">
            <label style="vertical-align: top" for="lar">Detaylar:</label>
            <textarea name="" id="" cols="35" rows="5"  ></textarea></div>
        <br><br>
<div style="text-align: right">
    <input style="background-color: red; padding: 30px; color: white;" type="submit" value="Kayıt Ekle">
</div>

    </form>
</div>

</body>
</html>
 
Bunlar da kodların şimdiki hali :)

Kod:
<?php include "db.php"; ?>

<!doctype html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="script/fontawesome/css/fontawesome.css" rel="stylesheet">
    <link href="script/fontawesome/css/brands.css" rel="stylesheet">
    <link href="script/fontawesome/css/solid.css" rel="stylesheet">
    <script src="script/jquery-3.7.1.min.js"></script>
    <title>PHP KAYITLAR</title>
</head>
<body>

<div style="padding-bottom: 20px; border: 1px solid red;padding: 15px">

<h1> KAYIT EKLEME EKRANI</h1>
    <form action="">

        <div style="padding-bottom: 20px">
            <label for="komponent">Komponent Adı:</label>
            <input type="text" id="komponent" name="komponent"><br><br>
            <label for="kategori">Kategori:</label>
            <select name="kategori" id="kategori">

                    <option value="">İşlem Seçiniz</option>
                    <option value="kategori">+ YENİ KATEGORİ EKLE</option>
                    <option value="yariiletken"> Yarı İletken</option>
                    <option value="kategori">- Transistör</option>
                    <option value="kategori">-- Mosfet</option>
                    <option value="kategori">-- BJT</option>
                    <option value="kondansator"> Kondansatör</option>
                    <option value="kategori">- Seramik</option>
                    <option value="elektrolit">- Elektrolit</option>
                    <option value="kondansator"> Direnç</option>
                    <option value="kondansator">- Karbon Film</option>
                    <option value="kondansator">- Alüminyum</option>

            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="lokasyon">Lokasyon:</label>
            <select name="lokasyon" id="lokasyon"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="yeni">+ YENİ LOKASYON EKLE</option>
                <option value="ev"> EV</option>
                <option value="dolap">- Dolap</option>
                <option value="ust">-- Üst sağ çekmece</option>
                <option value="orta">-- Orta Çekmece</option>
                <option value="isyeri"> İŞ YERİ</option>
                <option value="sag">- Sağ Çekmece</option>
                <option value="sol">- Sol Çekmece</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="uretici">Üretici:</label>
            <select name="uretici" id="uretici"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ ÜRETİCİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> SME</option>
                <option value="kategori"> TOSHIBA</option>
                <option value="kategori"> NEC</option>
                <option value="kategori"> TEXAS INSTRUMENTS</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="tedarikci">Tedarikçi:</label>
            <select name="tedarikci" id="tedarikci"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ TEDARİKÇİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> KARAKÖY</option>
                <option value="kategori"> ORASI</option>
                <option value="kategori"> BURASI</option>
            </select>
        </div>

        <div style="background-color: lightgray;padding: 10px;>
<h3>Paket Tipi</h3>
<input type="radio" id="DIP8" name="DIP8" value="DIP8">
<label for="DIP8">DIP8</label><br>
                <input type="radio" id="TO-3" name="TO-3" value="TO-3">
                <label for="TO-3">TO-3</label><br>
                <input type="radio" id="TO-220" name="TO-220" value="TO-220">
                <label for="TO-220">TO-220</label><br>
                <input type="radio" id="DIP16" name="DIP16" value="DIP16">
                <label for="DIP16">DIP16</label><br>
                <input type="radio" id="SOT-23" name="SOT-23" value="SOT-23">
                <label for="SOT-23">SOT-23</label>
        </div>
        <br><br>
        <div style="background-color: lightgray; display: inline-block; padding: 10px;">
        <label for="dokuman">Döküman:</label>

        <input type="file" id="dokuman" name="dokuman">
        </div>
        <br><br>
        <div style="">
            <label style="vertical-align: top" for="lar">Detaylar:</label>
            <textarea name="" id="" cols="35" rows="5"  ></textarea></div>
        <br><br>
<div style="text-align: right">
    <input style="background-color: red; padding: 30px; color: white;" type="submit" value="Kayıt Ekle">
</div>

    </form>
</div>

</body>
</html>
Bu is hic bole hatirlarsam yaparim isine benzemiyor :katil1:
 
En önemli konu, çok hızlı bir şekilde komponent girebilmek. Şöyle bir örnek vereyim. Diyelim elinde çekmecelerde 1 Ω dan 10 MΩ a kadar dirençler var. Komponent giriş ekranında sadece komponent değeri değişmeli, diğer ayarların hiç birisini yapmak zorunda olmaman lazım. Takır takır bütün dirençleri, bütün kondansatörleri girdikten sonra, bütün voltaj regülatörlerini, bütün dijital lojiği vs girebilmemiz lazım.
 
Aynen ben de öyle. Bir sürü proje var, sırası geldikçe yapacağız :D
 
@taydin hocam projede son durum nedir? nodejs ve db ile ilgili uygulama yapıyorum hali hazırda isterseniz yardımcı olabilirim.

Şu sıralar pek vakit ayıramıyorum. Aslında başta node.js ile yapacaktım ama @nt beni Django ile yapmaya ikna etti. Hem komponent takip program yazmış olacağım hem de python öğreneceğim.

Eğer böyle bir programı yazarsan forumun bulunduğu kiralık sunucuda barındırırız.
 
  • Beğen
Reactions: nt
Kayıt ekleme kodlarını değiştirip alağıdaki gibi hızlı ve pratik eklenecek şekilde düzenledim.



Aşağıdaki ekrandaki özellikler yeterli mi yoksa eklenmesi gereken başka özellik var mı?

1717323547516.png
 
Bu çok iyi bir giriş ekranı. Doküman ekleme de gerekli burada.

Doküman eklemede de database yapısında gösterildiği gibi yapmamız lazım. Bir doküman birden fazla komponent için kullanılabilmeli ve her komponenete ayrı ayrı eklenmemeli. Şemadaki yapı gereken bütün esnekliği sağlıyor ve "normalize" edilmiş durumda.
 
Tree view işini şöyle yapamaz mıyız? :)

1717324984848.png
 
Aynen. Görseller düşük öncelik. En önemlisi database yapısının doğru çalışması. Komponent ekleme, çıkarma, yer değiştirme işleri hatasız ve database yapısını bozmadan yapılabilmeli.

Mesela diyelim ev -- dolap 1 -- raf 3 -- çekmece 5 saklama yeri var. Dolap 1 deki her şeyi dolap 3 e taşımamız lazım. Bunu rahatlıkla sürükle bırak ile yapabilmemiz lazım. Yoksa gidip her bir komponentin saklama yerine teker teker güncellemememiz lazım.

Aynı şekilde dolap 3 saklama yeri silinirse, dolap 3 altındaki herşey, hiyerarşinin bir üst seviyesine bağlanmalı.

Bir doküman silinirse, bütün komponentlerdeki referansı silinmeli.

Bunlar asıl işin zor tarafı.
 
Aynen. Görseller düşük öncelik. En önemlisi database yapısının doğru çalışması. Komponent ekleme, çıkarma, yer değiştirme işleri hatasız ve database yapısını bozmadan yapılabilmeli.

Mesela diyelim ev -- dolap 1 -- raf 3 -- çekmece 5 saklama yeri var. Dolap 1 deki her şeyi dolap 3 e taşımamız lazım. Bunu rahatlıkla sürükle bırak ile yapabilmemiz lazım. Yoksa gidip her bir komponentin saklama yerine teker teker güncellemememiz lazım.

Aynı şekilde dolap 3 saklama yeri silinirse, dolap 3 altındaki herşey, hiyerarşinin bir üst seviyesine bağlanmalı.

Bir doküman silinirse, bütün komponentlerdeki referansı silinmeli.

Bunlar asıl işin zor tarafı.
Vakit alıcı evet, uzun yıllardan sonra ilk kez el sürdüm açıkçası. Zaman buldukça adım adım ilerleriz artık.
 
Sen php ile mi yazıyorsun?
 
Aslında istenen sayfaları resim olarak tasarımını yapıp buraya ekleyebilirseniz kodlama aşamasında birebir aynısını yaparım vakit buldukça.
 
Yukarıdaki sayfa tasarımı gayet iyi. Bir tane daha ilave kutu koyup orada dosya isimleri ekleyeceğiz o kadar.

Bir de bakıyorsun bu proje ile gaza gelip emeklilikten çıkıp tekrar iş hayatına atılmışsın :)
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,559
Mesajlar
126,564
Üyeler
3,059
Son üye
deniz777

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top